因此,我有一个不断陷入僵局的查询。熟悉系统的人无法弄清楚存储过程为什么会死锁,但是他们告诉我,我应该将其添加到其中:
SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
这真的是有效的解决方案吗?那是做什么的?
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
这将导致系统返回不一致的数据,包括重复的记录和丢失的记录。如果使用NOLOCK提示,则可能会错过以前提交的行的
死锁可以进行调查和解决,如果您遵循正确的程序,这没什么大不了的。当然,读脏东西似乎更容易,但是在路上,您将坐着很长时间盯着您的总账,想知道为什么这种做法 无法 平衡借方和贷方。因此,请再次阅读,直到您真正理解为止: 脏 读是不一致的读。
ALTER DATABASE MyDatabase SET READ_COMMITTED_SNAPSHOT ON
但是,请记住,快照隔离并 没有 解决死锁,它只是隐藏它们。适当研究死锁的原因和修复方法始终是适当的操作。