SQL Server扩展事件(Extended Events)—使用system_health扩展事件会话

SQL Server扩展事件(Extended Events)—使用system_health扩展事件会话

system_health 会话是 SQL Server 默认包含的扩展事件会话。 该会话在 SQL Server 数据库引擎启动时自动启动,并且运行时不会对性能造成任何明显影响。 该会话收集的系统数据可用于帮助对数据库引擎的性能问题进行故障排除。 因此,我们建议您不要停止或删除该会话。

此会话源自产品支持团队的想法,它可以跟踪通常被用来对客户系统进行调试的信息(例如当客户系统发生死锁或出现其它严重错误时)。此会话的创建和启动是 SQL Server实例安装过程的一部分,它在环缓冲区中跟踪事件,因此不会消耗太多内存。

该会话收集的信息包括:

l 发生严重性 >=20 的错误的任何会话的 sql_text 和 session_id。

l 发生与内存有关的错误的任何会话的 sql_text 和 session_id。 这些错误包括 17803、701、802、8645、8651、8657 和 8902。

l 任何无法完成的计划程序问题的记录。 (这些问题在 SQL Server 错误日志中显示为错误 17883。)

l 检测到的任何死锁。

l 等待闩锁(或其他相关资源)的时间 > 15 秒的任何会话的 callstack、sql_text 和 session_id 。

l 等待锁的时间 > 30 秒的任何会话的 callstack、sql_text 和 session_id 。

l 已长时间等待以获得抢先等待的任何会话的 callstack、sql_text 和 session_id。 持续时间因等待类型而异。 在抢先等待中,SQL Server 等待的是外部 API 调用。

l CLR 分配失败和虚拟分配失败的调用堆栈和 session_id。

l 有关内存 Broker、计划程序监视、内存节点 OOM、安全性和连接的 ring_buffer 事件。

l sp_server_diagnostics 中的系统组件结果。

l scheduler_monitor_system_health_ring_buffer_recorded 收集的实例运行状况。

l CLR 分配失败。

l 使用 connectivity_ring_buffer_recorded 时的连接错误。

l 使用 security_error_ring_buffer_recorded 时的安全错误。

查看会话定义

下面显示默认事件会话system_health的定义:

SELECT name,
event_retention_mode_desc AS event_retention_mode,
max_dispatch_latency,
max_memory,
max_event_size,
memory_partition_mode_desc AS memory_partition_mode,
track_causality,
startup_state
FROM sys.server_event_sessions
WHERE name = ‘system_health‘;

下面显示事件、谓词和动作:

SELECT package, e.name, predicate,
(
SELECT package + ‘.‘ + name + ‘, ‘
FROM sys.server_event_session_actions a
WHERE a.event_session_id = e.event_session_id
AND a.event_id = e.event_id
ORDER BY package, name
FOR XML PATH(‘‘)
) AS Actions
FROM sys.server_event_session_events e
INNER JOIN sys.server_event_sessions es ON e.event_session_id = es.event_session_id
WHERE es.name = ‘system_health‘;

下面显示目标及其选项:

SELECT package, t.name,
(
SELECT name + ‘=‘ + cast(value AS varchar) + ‘, ‘
FROM sys.server_event_session_fields f
WHERE f.event_session_id = t.event_session_id
AND f.object_id = t.target_id
FOR XML PATH(‘‘)
) AS options
FROM sys.server_event_session_targets t
INNER JOIN sys.server_event_sessions es ON t.event_session_id = es.event_session_id
WHERE es.name = ‘system_health‘;

查看会话数据

当事件会话创建并运行,数据收集在目标用于后续使用。除了文件目标(event_file),从sys.dm_xe_session_targets视图中可以查询到所有的目标数据,需要读取数据通过sys.fn_xe_file_target_read_file()表值函数。从sys.dm_xe_session_targets转换target_data列为XML格式。

您可以使用下列代码来查看环缓冲区中包含的内容:

SELECT name, target_name, CAST(target_data AS XML) target_data
FROM sys.dm_xe_sessions s
INNER JOIN sys.dm_xe_session_targets t
ON s.address = t.event_session_address
WHERE s.name = ‘system_health‘;
GO

若要查看事件文件中的会话数据,请使用 Management Studio 中提供的扩展事件用户界面。

还原system_health会话

如果删除 system_health 会话,则可以通过在查询编辑器中执行 u_tables.sql 文件来还原该会话。 该文件位于下面的文件夹中,其中 C: 表示您安装 SQL Server 程序文件的驱动器:

C:\Program Files\Microsoft SQL Server\MSSQL11.<instanceid>\MSSQL\Install

请注意在还原该会话后,必须使用 ALTER EVENT SESSION 语句或使用对象资源管理器中的“扩展事件”节点启动会话。 否则,该会话会在您下次重新启动 SQL Server 服务时自动启动。

时间: 2024-10-13 16:47:13

SQL Server扩展事件(Extended Events)—使用system_health扩展事件会话的相关文章

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句 创建扩展事件会话 展开"Object Explorer"."Management"."Extended Events"."Sessions"目录,你会发现一到两个预设的会话.默认,在SQL Server 2012包含system_health会话,而根据不同的SQL Server2012的版本,可能有AlwaysOn_health会话

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁脚本实现

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁脚本实现 -- Create a new event session (it is better to create a new session and not modify the system's built-in session "system_health"): CREATE EVENT SESSION [Deadlock_Monitor] ON SERVER ADD EVENT sql

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪监控死锁 我们通过SQL Server 2012图形界面来部署一个扩展事件跟踪会话.然后可以生成SQL脚本,在2008或2008 R2版本下运行类似的跟踪. 步骤1: 通过"Object Explorer"连接到实例,展开"Management"."Extended Events"."Sessions". 步骤2: 右键点击"Sess

恢复SQL Server被误删除的数据(再扩展)

恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是文章里的存储过程不能实现对备份出来的日志备份里所删数据的恢复 这个是一个缺陷,本人决定对这个存储过程扩展一下,支持对log backup文件里的delete语句进行恢复 实验步骤 1.首先先准备好测试表和测试语句 USE [sss] GO --建表 CREATE TABLE testdelete ( id INT IDENTITY(1, 1) NOT NULL P

Sql Server之旅——终点站 nolock引发的三级事件的一些思考

曾今有件事情让我记忆犹新,那年刚来携程不久,马上就被安排写一个接口,供企鹅公司调用他们员工的差旅信息,然后我就三下五除二的给写好 了,上线之后,大概过了一个月...DBA那边报告数据库出现大量锁超时,并且及时根据sql的来源将email发到了我们部门,指出sql读取时间过长, 并且缺少nolock,影响了大量机票订单入库,然后我就拿着sql去生产环境跑了下,22s...花擦...项目上线时间太久,版本已经不存在了,无法 回滚...原本准备撤下接口...看了下撤下接口跟加上nolock时间相差不多

PowerDesigner 16.5对SQL Server 2012 生成数据库时&quot;不支持扩展属性&quot;问题

团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对象有Comment时(用来在团队不同成员间共享描述信息) 生成数据库时会得到一个提示"不支持扩展属性,或对象不存在",分析发现异常在类似以下语句: if exists(select 1 from sys.extended_properties p where p.major_id = ob

【转】Microsoft&#174; SQL Server&#174; 2012 Performance Dashboard Reports

http://www.cnblogs.com/shanyou/archive/2013/02/12/2910232.html SQL Server Performance Dashboard Reports是一组Reporting Services的报表,和SQL Server Management Studio中所介绍的报表一起使用.这些报表允许数据库管理员快速地确定他们的系统中是否存在瓶颈,瓶颈是否正在发生,捕获这些附加的诊断数据可能会对解决问题更有帮助.例如,系统正在等待disk IO,这

SQL Server 2008性能故障排查(一)——概论

原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节发布.由于本人水平有限,翻译结果肯定存在问题,为了不造成误导,在每篇结尾处都附上原文,供大家参考,也希望能指出我的问题,以便改进.谢谢. 另外,本文写给稍微有经验的数据库开发人员或者DBA看,初学者可能会看不懂.在此请见谅 作者:Sunil Agarwal, Boris Baryshnikov, K

SQL Server 2012内部原理及故障排除(专栏)

PROFESSIONAL SQL SERVER? 2012 INTERNALS AND TROUBLESHOOTING一书(可从这里下载),觉得内容很不错.自己也想对SQL Server 2012有个较全面的理解,于是边看边翻译,并将重点内容发表在博客中.下面是相关博客的链接,希望能够给大家带来一点帮助.因个人能力有限,若有翻译不妥之处,欢迎指正和交流! 第一部分  内部原理(INTERNALS) 第一章 SQL Server 架构 数据库事务:          http://blog.csd

SQL Server扩展事件(Extended Events)-- 扩展事件概念解析

SQL Server扩展事件(Extended Events)-- 扩展事件概念解析 下图描述了扩展事件中引入的几个新概念: 事件 事件是指代码中定义的点.此类示例包括:T-SQL 语句完成执行时的点或结束获取锁定时的点.每个事件都有一个定义的负载(该事件返回的列的集合),它是使用 ETW 模型(其中每个事件都返回一个通道和关键字作为负载的一部分)来定义的,以便能够与 ETW 集成.SQL Server 2008 最初提供 254 个定义的事件,预计在今后还会增加. 使用下列代码可以查看这些定义