sql-server – 是否可以创建具有只读访问权限的死锁?

前端之家收集整理的这篇文章主要介绍了sql-server – 是否可以创建具有只读访问权限的死锁?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个VB6应用程序通过ADO访问MSsql2000服务器上的单个表.我正在使用只读访问权限(adOpenStatic,adLockReadOnly)网络中还有其他应用程序可以对表进行更改.

由于某种原因,我收到的错误是我的应用程序被选为死锁受害者.

我真的很困惑:当我从一张桌子上读书时,为什么会出现僵局?我期待超时,因为其他应用程序的编写,但不是死锁……

有人可以对此有所了解吗?

更新:2009-06-15我仍然对这个问题的解决方案感兴趣.所以我提供了更多信息:

>如果我选择adOpenForwardOnly或adOpenStatic,则没有任何区别
>如果光标位置是客户端或服务器,则没有区别.

解决方法

由于存在非聚集索引,单个SELECT语句可能会针对单个UPDATE或DELETE语句进行死锁,请考虑以下情况:

读者(您的应用程序)首先获取非聚集索引上的共享锁以执行查找,然后尝试在页面获取共享锁,以便返回数据本身.

编写器(其他应用程序)首先在包含数据的数据库页面上获得一个exlusive锁,然后尝试获取索引的独占锁以更新索引.

您可以在Microsoft知识库文章Q169960(http://support.microsoft.com/kb/q169960/)中找到有关此(和其他)类型的死锁的更多信息

此外,您可能希望了解一下如何获取死锁跟踪信息(跟踪标志1222) – 这将在发生死锁时确切报告哪些sql语句与哪些对象发生冲突.这是一篇相当不错的文章http://blogs.msdn.com/bartd/archive/2006/09/09/747119.aspx

原文链接:https://www.f2er.com/mssql/78832.html

猜你在找的MsSQL相关文章