问题描述
|
当我在SQL Server中获得死锁图xml时,它显示了每个进程的执行堆栈,例如(我删除了大多数属性):
<process>
<executionStack>
<frame>INSERT INTO MYTABLE</frame>
<frame>INSERT INTO MYTABLE</frame>
</executionStack>
<inputbuf>INSERT INTO MYTABLE</inputbuf>
</process>
我知道框架列表不包含事务中的所有框架,但是它包含与死锁有关的所有框架,所以我不需要进一步检查了吗?还是我还需要在同一事务中检查前面的sql语句,以完整了解死锁的原因?
编辑:进一步说明,如果在两个单独的spid中运行,则以下内容可能会自身死锁:
从mytable中选择*,其中column = @arg
从mytable中删除,其中column = @arg
死锁图会显示select语句还是delete语句,还是仅显示delete语句,因为那是事务中的最后一条语句?也没有看到select语句,就很难确定正确的修复方法(例如,select上的updlock提示)。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)