使用Extended Events收集错误信息
2014-02-25 15:23
686 查看
扩展事件提供了一个轻量级的平台可以用来收集错误信息,方便DBA查看最近的数据库错误配合开发人员一起解决问题。
下面的例子我们创建extended event 会话来获取错误208, 2812,and 4121。这三个错误分别对应:Invalid object name, Could not find stored procedure, and Cannotfind either column or the user-defined function or aggregate. 可以根据扩展事件sqlserver.error_reported。我们获取下面的详细信息:
sqlserver.session_id
sqlserver.sql_text
sqlserver.client_app_name
sqlserver.client_hostname
sqlserver.database_id
sqlserver.username
通过这些信息我们可以了解到是哪个应用出现的问题尽快解决,创建扩展事件会话使用下面的脚本:
CREATEEVENTSESSION exErrors ONSERVER -- Session NameADDEVENT sqlserver.error_reported -- Event wewant to capture(ACTION -- What contents to capture(sqlserver.session_id,sqlserver.sql_text,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.username)-- Somepredicate or filter (here it is object not found error number)WHERE (error = 208OR error = 2812OR error = 4121))ADDTARGET package0.ring_bufferWITH (max_dispatch_latency = 5seconds); -- ThetargetGOALTEREVENTSESSION exErrors ONSERVERSTATE = STARTGO
查询错误信息的脚本:
WITH exErrorsAS (SELECT CAST(target_data ASxml) AS SessionDataFROMsys.dm_xe_session_targetsstINNERJOINsys.dm_xe_sessions s ONs.address= st.event_session_addressWHERE name ='exErrors')SELECTerror.value('(@timestamp)[1]','datetime') as event_timestamp,error.value('(data/value)[5]','varchar(max)') as [error_message],error.value('(data/value)[1]','int') as error,error.value('(action/value)[3]','nvarchar(255)') AS client_app_name,error.value('(action/value)[4]','nvarchar(255)') as client_hostname,DB_NAME(error.value('(action/value)[5]','int')) AS database_name,error.value('(action/value)[6]','nvarchar(128)') AS username,error.value('(action/value)[2]','varchar(max)') as sql_text,error.value('(action/value)[1]','int') as session_id,error.value('(data/value)[4]','bit') as user_definedFROM exErrors dCROSSAPPLY SessionData.nodes('//RingBufferTarget/event')AS t(error)WHERE error.value('@name','nvarchar(128)') ='error_reported';
结果如下:
下面的例子我们创建extended event 会话来获取错误208, 2812,and 4121。这三个错误分别对应:Invalid object name, Could not find stored procedure, and Cannotfind either column or the user-defined function or aggregate. 可以根据扩展事件sqlserver.error_reported。我们获取下面的详细信息:
sqlserver.session_id
sqlserver.sql_text
sqlserver.client_app_name
sqlserver.client_hostname
sqlserver.database_id
sqlserver.username
通过这些信息我们可以了解到是哪个应用出现的问题尽快解决,创建扩展事件会话使用下面的脚本:
CREATEEVENTSESSION exErrors ONSERVER -- Session NameADDEVENT sqlserver.error_reported -- Event wewant to capture(ACTION -- What contents to capture(sqlserver.session_id,sqlserver.sql_text,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.username)-- Somepredicate or filter (here it is object not found error number)WHERE (error = 208OR error = 2812OR error = 4121))ADDTARGET package0.ring_bufferWITH (max_dispatch_latency = 5seconds); -- ThetargetGOALTEREVENTSESSION exErrors ONSERVERSTATE = STARTGO
查询错误信息的脚本:
WITH exErrorsAS (SELECT CAST(target_data ASxml) AS SessionDataFROMsys.dm_xe_session_targetsstINNERJOINsys.dm_xe_sessions s ONs.address= st.event_session_addressWHERE name ='exErrors')SELECTerror.value('(@timestamp)[1]','datetime') as event_timestamp,error.value('(data/value)[5]','varchar(max)') as [error_message],error.value('(data/value)[1]','int') as error,error.value('(action/value)[3]','nvarchar(255)') AS client_app_name,error.value('(action/value)[4]','nvarchar(255)') as client_hostname,DB_NAME(error.value('(action/value)[5]','int')) AS database_name,error.value('(action/value)[6]','nvarchar(128)') AS username,error.value('(action/value)[2]','varchar(max)') as sql_text,error.value('(action/value)[1]','int') as session_id,error.value('(data/value)[4]','bit') as user_definedFROM exErrors dCROSSAPPLY SessionData.nodes('//RingBufferTarget/event')AS t(error)WHERE error.value('@name','nvarchar(128)') ='error_reported';
结果如下:
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- SQL Server 语句操纵数据库
- linux快速部署mysql服务器
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题
- SQL Server复制需要有实际的服务器名称才能连接到服务器
- SQL server 表操作介绍
- SQL Server 2000 注入防护大全(二)
- SQL Server 2000 注入防护大全(一)
- PJBlog存在SQL注入漏洞大家要快下补丁了