我们运行 SQL Server 2000,每天晚上都会遇到一些这样的错误。
Could not continue scan with NOLOCK due to data movement
Run Code Online (Sandbox Code Playgroud)
引发此错误的查询是一个大型复杂查询,它连接了十多个表。我们的基础数据可以经常更新。
文化“最佳实践”是,在过去,NOLOCK
提示的引入提高了性能并改进了并发性。这个查询不需要 100% 准确,即我们会容忍脏读等。然而,我们正在努力理解为什么数据库会抛出这个错误,即使我们有所有这些锁定提示。
任何人都可以对此有所了解 - 温柔一点,我实际上是一名程序员,而不是 DBA :)
PS:我们已经应用了前面提到的修复:http : //support.microsoft.com/kb/815008