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的定义:

 

1
2
3
4
5
6
7
8
9
10
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' ;

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
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' ;

 

下面显示目标及其选项:

 

1
2
3
4
5
6
7
8
9
10
11
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格式。

 

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

 

1
2
3
4
5
6
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 服务时自动启动。

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的定义:

 

1
2
3
4
5
6
7
8
9
10
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' ;

 

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

 

1
2
3
4
5
6
7
8
9
10
11
12
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' ;

 

下面显示目标及其选项:

 

1
2
3
4
5
6
7
8
9
10
11
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格式。

 

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

 

1
2
3
4
5
6
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 服务时自动启动。






















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1599384 ,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值