601: Could not continue scan with NOLOCK due to data movement(由于数据移动,无法继续以 NOLOCK 方式扫描)
SQL Server含义
在以 NOLOCK(READ UNCOMMITTED)方式扫描期间,由于并发的数据移动(页拆分/移动),扫描无法继续。无锁读取遇到了不一致的状态。
原因
在使用 NOLOCK 提示或 READ UNCOMMITTED 隔离级别读取时,被扫描的页因并发的更新/删除/页拆分而被移动。
解决方法
重新运行查询(通常是瞬时的)。尽量避免使用 NOLOCK 提示;使用 READ COMMITTED SNAPSHOT(RCSI)隔离实现非阻塞且一致的读取。在写密集型表上,优先使用快照隔离而非脏读。
同一数据库的其他条目
- 8623The query processor ran out of internal resources and could not produce a query plan(查询处理器耗尽了内部资源,无法生成查询计划)
- 4104The multi-part identifier could not be bound(无法绑定由多个部分组成的标识符)
- 2714There is already an object named in the database(数据库中已存在名为 ... 的对象)
- 50000用 RAISERROR 引发的自定义错误
- 3902The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION(COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION)
- 1101Could not allocate a new page because of insufficient disk space in filegroup(文件组磁盘空间不足,无法分配新页)
- 3729Cannot DROP because it is being referenced by object(无法 DROP,因为它正被对象引用)