对于DBA,死锁有时是件很让人头痛的事。往往用户反映说系统卡死了,半天没反应,这时我们去查看活动监视器(Activity Monitor),或通过T-SQL(可参考这里),或通过Trace等手段,发现数据库发生死锁了。当系统发生死锁时,有没有办法让系统就立即触发并发mail通知相关死锁信息呢?答案是有的。实现之前要确保两件事情:
- 开启死锁跟踪标志
- 数据库邮件已配置并且能正常工作(这部分可以参考我之前的Blog)
下面介绍一下如何开启死锁跟踪标志:
DBCC TRACEON (3605,1204,1222,-1)
标志的含义如下:
3605:将DBCC的结果输出到错误日志
1204:返回参与死锁的锁的资源和类型,以及受影响的当前命令。
作用域:仅全局
1222:以不符合任何 XSD 架构的 XML 格式,返回参与死锁的锁的资源和类型,以及受影响的当前命令。
作用域:仅全局
更多关于TRACEON的信息可参考MSDN,跟踪标志可参考MSDN。
重要提示:这种设置跟踪标志的方式在SQL Server重启后将不再有效,如果要保证SQL Server运行时总是开启,你可以使用-T启动选项(可参考