我有一个庞大的SQL Server 2008 R2数据库,其中有许多行不断更新。更新由调用存储过程的后端服务应用程序完成。在其中一个存储过程中,有一个SQL游标可以重新计算和更新数据。一切都运行良好。
但是,我们的前端Web应用程序需要搜索这些行,此搜索有时会导致
超出锁定请求超时时间。在 Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery()..
在做了一些研究之后,我发现让这个查询运行没有问题的最好方法是让它以“读取未提交的隔离级别”运行。我发现此设置可以在Telerik OpenAccess设置中进行,但这是一个影响整个数据库ORM项目的设置。那不是我想要的!我只希望此级别用于此查询。
有没有办法让这个特定的LINQ查询在这个未提交的隔离级别运行? 或者我们可以使这一个查询使用WITH NOLOCK提示吗?
答案 0 :(得分:2)
使用
SET LOCK_TIMEOUT -1
在查询的开头。
运行read uncommitted
隔离级别的查询(并使用NOLOCK提示)可能会导致许多奇怪的问题,您必须清楚地了解为什么这样做以及它如何干扰您的数据流