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(同名のオブジェクトがすでに存在する)
- 50000RAISERROR で発生させたカスタムエラー
- 3902The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION(COMMIT に対応する 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 できない)