Sql server 避免成为数据库死锁的受害者

Sql server 避免成为数据库死锁的受害者,sql-server,database,deadlock,Sql Server,Database,Deadlock,每天我都运行sql server脚本来更新我的表。每周一次,我都会成为数据库死锁的受害者。有几个人可以访问数据库,他们都知道在数据库更新时不应该访问数据库。但是有人在更新过程中访问数据库,我们遇到了死锁。有没有办法避免我成为僵局的受害者?我听说过死锁优先权。如果我将死锁优先级设置为10,会有帮助吗?使用死锁优先级是否存在任何性能问题或后果 假设其他进程的死锁优先级小于10,这将导致您赢得死锁解决 如果会话具有不同的死锁优先级,则选择死锁优先级最低的会话作为死锁受害者 当然,您可以在更新期间始终

每天我都运行sql server脚本来更新我的表。每周一次,我都会成为数据库死锁的受害者。有几个人可以访问数据库,他们都知道在数据库更新时不应该访问数据库。但是有人在更新过程中访问数据库,我们遇到了死锁。有没有办法避免我成为僵局的受害者?我听说过死锁优先权。如果我将死锁优先级设置为10,会有帮助吗?使用死锁优先级是否存在任何性能问题或后果

假设其他进程的死锁优先级小于10,这将导致您赢得死锁解决

如果会话具有不同的死锁优先级,则选择死锁优先级最低的会话作为死锁受害者


当然,您可以在更新期间始终运行一个脚本来删除其他用户的更新权限…

假设其他进程的死锁优先级小于10,这将导致您赢得死锁解决

如果会话具有不同的死锁优先级,则选择死锁优先级最低的会话作为死锁受害者

当然,在更新期间,您始终可以运行一个脚本来删除其他用户的更新权限

有几个人可以访问数据库,他们都知道自己是 更新时不应访问数据库

为什么不把数据库放在单用户中,在一个事务中更新并恢复到多用户

拉吉

有几个人可以访问数据库,他们都知道自己是 更新时不应访问数据库

为什么不把数据库放在单用户中,在一个事务中更新并恢复到多用户


Raj

他们很可能没有设置任何死锁优先级,也没有人有权更新数据库中的任何内容。它们只有只读访问权限。使用死锁优先级有什么缺点吗?@ LITONUDIN:如果它们不更新数据,您可以考虑它们是否可以使用Read未提交隔离级别。这可能适合他们的任务(具体取决于他们正在阅读的内容和您的更新的性质),并且是避免死锁的干净解决方案。如果使用正确,我不知道使用死锁优先级有什么不好的地方。当然,如果多个团队都认为他们应该拥有最高的优先级,那么这将不起作用。很可能他们没有设置任何死锁优先级,并且没有人有权更新数据库中的任何内容。它们只有只读访问权限。使用死锁优先级有什么缺点吗?@ LITONUDIN:如果它们不更新数据,您可以考虑它们是否可以使用Read未提交隔离级别。这可能适合他们的任务(具体取决于他们正在阅读的内容和您的更新的性质),并且是避免死锁的干净解决方案。如果使用正确,我不知道使用死锁优先级有什么不好的地方。当然,如果多个团队都认为他们应该拥有最高优先级,那么这将不起作用。在启动流程之前,以独占方式锁定数据库。这将保留它,这样您就不会遇到死锁MSFT文章,只要确保在完成或失败时清除锁!在启动进程之前,以独占方式锁定数据库。这将保留它,这样您就不会遇到死锁MSFT文章,只要确保在完成或失败时清除锁!