我正在尝试分析SQL Server 2008探查器中的死锁.我知道如何找到有问题的SQL查询,但收集的查询不包含参数值.
换句话说,我可以看到这样的事情:
DELETE FROM users WHERE id = @id
但我想看到的是:
DELETE FROM users WHERE id = 12345
我想我需要在探查器中收集一些额外的事件或列,但我不知道哪个.我目前正在使用"TSQL_LOCKS"模板.
任何提示将不胜感激.
谢谢,
阿德里安
免责声明:之前我曾问过类似的问题,但我觉得这个问题太具体了,这就是我没有回复的原因.我开始用这个尝试了.
我认为你需要RPC:Completed事件:
http://msdn.microsoft.com/en-us/library/ms175543.aspx
事件探查器将在RPC:Completed / RPC:Starting事件中包含参数值。但是您已经得到答复告诉您。
我要添加的是,几乎不需要知道参数运行时值即可分析死锁图。首先,因为如果在死锁中涉及“用户”,那么如果冲突在键上,则死锁图本身将放弃@id是什么冲突。其次,更重要的是,对于死锁情况,所涉及的确切密钥无关紧要。不太可能发生死锁,因为会删除ID为123的用户,但是在删除用户321时不会发生。
如果您决定首先询问SO,那么我认为最好是发布实际的死锁图,并让社区进行了解。这里有很多仅从死锁图XML就能回答很多问题的方法。