【发布时间】:2010-05-11 20:56:07
【问题描述】:
我们正试图追查一个死锁问题。我有一个从 Profiler 生成的死锁图 (xdl)。它将丢失的 SQL 语句显示为简单的 Select 语句,而不是 Update、Delete 或 Insert 语句。该图将失败的 Select 语句显示为请求资源 **but also owning an Update lock on a resource** 上的共享锁。这让我感到困惑。为什么不属于插入、更新或删除的 Select 语句会在资源上持有更新锁?
我应该补充一点,它拥有的更新锁位于被失败的 Select 语句选择的表上。
编辑:请不要建议使用 NoLock。是的,这将解决问题,但引入了一个新问题——脏读问题。此查询正在访问生产服务器。我真正想知道的是为什么 Select 语句会发出更新锁。
【问题讨论】:
标签: sql-server