我有一个很大的SQL Server 2008 R2数据库,有很多行不断更新。更新由调用存储过程的后端服务应用程序完成。在其中一个存储过程中,有一个SQL游标可以重新计算和更新数据。这一切运行良好。超出锁定请求超时时间 - Telerik OpenAccess ORM
但是,我们的前端Web应用程序需要通过这些行搜索和该搜索有时会导致
锁请求超时周期超出。在 Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery()..
之后做一些研究,我发现,最好的办法,使查询运行没有问题是使其与运行“读取未提交的隔离级别”。我发现这个设置可以在Telerik OpenAccess设置中进行,但这是一个影响整个数据库ORM项目的设置。这不是我想要的!我只需要这个查询的这个级别。
有没有办法让这个特定的LINQ查询运行在这个未提交的隔离级别? 或者我们可以让这个查询使用WITH NOLOCK提示吗?
如果有一种方法可以帮助我们防止这些锁定错误,那么也会很有趣。最重要的是我们的前端可以执行快速搜索。速度也比数据一致性更重要。 – Tys 2012-02-18 16:04:22
如果你能够直接编辑查询,你可以使用下面的语句来设置当前会话的隔离:'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED' – 2012-02-18 16:09:05
我敢打赌,取代你的游标解决方案将会减少基于集合的解决方案你的锁定问题,并可能表现更好。 – 2012-02-18 16:10:47