我有一个连接到SQL服务器的应用程序来运行一些插入/更新。我们已经遇到了死锁,但我注意到除了报告死锁之外,还会丢弃与数据库的连接,客户端必须重新连接。
这是正常的吗?即使这不是正常的行为,SQL服务器是否有可能不仅决定我的客户端将成为死锁受害者,而且它也终止了连接?
有没有办法阻止连接被删除?
答案 0 :(得分:1)
根据定义,死锁意味着两个连接被卡住,其中SPID 1锁定了SPID 2需要的东西,SPID 2锁定了SPID 1需要的东西。也不能完成他们的交易,因为他们需要其他人锁定的东西。在这种情况下,服务器将选择一个受害者SPID并将其终止,以便另一个可以完成其交易。
阻止它的唯一方法是弄清楚为什么首先发生死锁。您可以运行跟踪来监视死锁并将与其相关的信息捕获到图表中,然后在SSMS中查看该图。