前言:
SQLServerProfiler是非常占用资源的,所以不适合长期开启。此时可以考虑使用SQL Trace来代替。由于死锁的发生往往是突然的,所以也不适用于Profiler一直开启跟踪。
本文将演示如何使用sql trace来进行,sql trace会把死锁信息写入SQLServer的错误日志中,以便后续分析之用。
准备工作:
本文使用跟踪标志1204来跟踪服务器级别的死锁问题。本文将使用上文中的脚本来演示。
步骤:
1、 打开SQLServer配置管理器:
2、 选择SQLServer服务并右键属性:
3、 选择【启动参数】,2008和2012的这部分界面有点不同,但是相信大家应该能找到。在启动参数最下面添加-t1204,然后按确定。
4、 然后邮件SQLServer服务并重启:
要注意,尽可能使用SQLServer配置管理器来重启服务,而不要直接使用Windows Services MMC来操作。
5、 现在来重新执行上文中的步骤。
6、 在发生了1205错误之后为止。
7、 现在来查看SQLServer的错误日志,也可以执行xp_readerrorlog系统存储过程来查看。也可以在C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLServer\MSSQL\Log下找到文件(不同机器可能不一样的路径)
8、 下面是从错误日志中找打的截图:
分析:
在SQLServer中,跟踪标志1204用于重定向死锁相关信息到ERRORLOG中,SQLServer将在重启时调用启动参数中的跟踪标志。
启动参数之后在SQLServer 服务重启之后才生效。在重启之后,重做死锁演示,就会把死锁信息写入ERRORLOG中。
资料下载: