1

我有一个大型 SQL Server 2008 R2 数据库,其中有许多行不断更新。更新由调用存储过程的后端服务应用程序完成。在其中一个存储过程中有一个 SQL 游标,用于重新计算和更新数据。这一切都运行良好。

但是,我们的前端 Web 应用程序需要搜索这些行,而这种搜索有时会导致

超过锁定请求超时期限。在 Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery()..

在做了一些研究之后,我发现让这个查询运行没有问题的最好方法是让它以“读取未提交的隔离级别”运行。我发现可以在 Telerik OpenAccess 设置中进行此设置,但该设置会影响整个数据库 ORM 项目。那不是我想要的!我只想要这个查询的这个级别。

有没有办法让这个特定的 LINQ 查询在这个未提交的隔离级别上运行?或者我们可以让这个查询使用 WITH NOLOCK 提示吗?

4

1 回答 1

2

采用

SET LOCK_TIMEOUT -1

在查询的开头。

请参阅参考手册

read uncommitted隔离级别运行查询(并使用 NOLOCK 提示)可能会导致许多奇怪的问题,您必须清楚地了解为什么要这样做以及它如何干扰您的数据流

于 2012-02-18T16:35:30.890 回答