技术开发 频道

SQL Server用扩展事件进行高级故障排除

  我知道资源池 256 用于市场部,而 257 用于开发部,因此这些数字对于我弄清这些团队在公司中的数据库使用情况很有意义。如果不使用扩展事件,我可能无法轻松得出这些结果。

  最后,我将使用下列代码来停止此会话:

ALTER EVENT SESSION MonitorIO ON SERVER
STATE
= STOP;
GO

 

  要了解此示例中各阶段输出的详细内容,请查看本文随附的屏幕演示。其地址为:technetmagazine.com/video。

  system_health 扩展事件会话

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

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

SELECT CAST (xest.target_data AS XML)
FROM sys.dm_xe_session_targets xest
JOIN sys.dm_xe_sessions xes ON
xes.address
= xest.event_session_address
WHERE xes.name
= 'system_health';
GO

 

  Microsoft PSS SQL 支持博客中包含很多有关此会话跟踪内容的详细信息。

  结束语

  有人告诉我 SQL Server 团队计划未来向 sqlserver.exe 中添加更多事件。事实上,其数量已从 2007 年二月 CTP(社区技术预览版)中的 165 猛增到 RTM(批量生产版)中的 254。

  此外还有许多的确非常有趣的事件,如用于更改数据捕获的事件(我已在 2008 年 11 月《TechNet 杂志》中的“跟踪企业数据库中的更改”中对其做过介绍)、数据压缩事件以及索引页分割事件等。索引页分割看起来有望找出那些导致性能降低碎片的索引,而无需在全部索引中定期运行 sys.dm_db_index_physical_stats DMV。

  总之,全新的扩展事件系统使许多之前无法实现的极为复杂的监控变为现实。尽管它要求必须对 XML 解析有所了解才能得到所需的数据,但这一全新系统的优势远远超出了学习新编码结构所带来的挑战。

  我希望本文能使您对扩展事件有所了解并激发您对它的兴趣,同时还为您介绍了几种您可以处理的问题。祝故障排除顺利!与往常一样,如果您有任何反馈或问题,请发送电子邮件至 Paul@SQLskills.com。

点击查看更多TechNet精彩文章

0
相关文章