readcommitted和nolock锁冲突

时间:2013-10-02 10:02:25

标签: sql sql-server tsql

为了防止锁定和死锁,我决定在我的视图中使用表提示WITH(NOLOCK)

效果很好,用户也很满意。

当从应用程序(称为PIVOTAL的CRM应用程序)中调用这些视图时,问题就开始了。

当此应用程序查询我的视图(其中包含WITH(NOLOCK))时,它会添加一个不同的表锁READCOMMITTED

例如:

select * from MY_view WITH(READCOMMITTED) 

结果是一条SQL Server错误消息告诉我有关冲突的锁。

现在,我无法更改应用程序及其生成脚本的方式。

有没有办法让SQL Server忽略My_view之外的提示? 有没有办法让NOLOCK优先于READCOMMITTED,以便我可以将其保留在My_View内?

谢谢和问候。 马塞洛

1 个答案:

答案 0 :(得分:0)

我不认为这里有一个简单的解决方案。 SQL Server不能使用冲突锁,因为它不知道要应用于基础表的锁。

您可以使用READCOMMITTED创建一组单独的视图供您阅读吗?