这听起来很奇怪,但是在我们在服务器中获得的一堆数据库中发生了,我们可以通过日志上的输出来判断,但这似乎正在影响另一个数据库,因为当死锁发生时系统会挂起.
我们已经确定了死锁事件中涉及的对象,但没有一个对象存在于我们正在使用的系统的数据库中。
我仍然需要查看程序主体,但这可能吗?来自其他数据库的进程进入死锁并挂起整个服务器或其他数据库?
这听起来很奇怪,但是在我们在服务器中获得的一堆数据库中发生了,我们可以通过日志上的输出来判断,但这似乎正在影响另一个数据库,因为当死锁发生时系统会挂起.
我们已经确定了死锁事件中涉及的对象,但没有一个对象存在于我们正在使用的系统的数据库中。
我仍然需要查看程序主体,但这可能吗?来自其他数据库的进程进入死锁并挂起整个服务器或其他数据库?
死锁在 MS Sql Server 中不是致命事件(例如,在代码中不同)。这是因为 Sql Server 会定期扫描死锁,然后选择要杀死的进程之一。那是您收到日志消息的时候。
如果没有 Sql Server 错误(我从未遇到过),我认为更可能是顺序颠倒了 - 挂起的服务器/数据库阻止了查询的正常执行,导致死锁,因为过程需要更长的时间来执行。
当两个处于死锁的进程也将对象锁定在 TempDB 中时,我已经看到了这种情况。
然后 tempdb 中的锁定对象阻止其他进程创建对象并因此挂起。
这是旧版本的 SQL Server (2000) 上的一个问题,但我不记得在更新的版本上看到过它。
有可能的。如果您的服务器无法对任何中断做出反应,它就无法(正确地)执行其他请求。