service broker event notification即使用sql server引擎内置的异步消息通讯机制加上sql server的事件通知机制来捕获死锁信息,这个方法非常简单,对sql server数据库本身影响非常小。一个简单的模型是将捕获到的死锁xml信息存放在队里中,然后分析队列,重现详细的死锁场景。代码如下:
当死锁发生后,死锁信息会被异步的记录到service broker队列中。
查询结果展示如下:

接下来的工作就是分析队里中的死锁信息,分析方法和前面几篇文章的分析方法大同小异,只是在公用表达式的初始化部分稍有差异。方法如下:
展示结果如下图所示:
使用service broker event notification来捕获死锁信息,是一个比较新颖的选择,由于采用异步消息通讯的方式,对sql server影响非常小。个人建议使用该方法来捕获、分析死锁。