2

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

效果很好,用户很满意。

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

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

例如:

select * from MY_view WITH(READCOMMITTED) 

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

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

有没有办法让 SQL Server 忽略外部的提示My_view?有没有办法让NOLOCK占上风READCOMMITTED,让我可以保持在里面My_View

谢谢并恭祝安康。马塞洛

4

1 回答 1

0

我认为这里没有简单的解决方案。SQL Server 不能采用冲突锁,因为它不知道将哪些锁应用于基础表。

您可以使用 为应用程序阅读创建一组单独的视图READCOMMITTED吗?

于 2013-10-02T10:27:08.900 回答