1222: Lock request time out period exceeded(ロック要求のタイムアウト期間を超過)
SQL Server意味
ロックの取得を待つ間にクエリのタイムアウトが経過した。別のトランザクションが必要なリソースを長時間ロックしていたため、要求は取り消された。
原因
SET LOCK_TIMEOUT で設定した待機時間の超過、長時間実行されるブロッキングトランザクション、コミットされていないオープントランザクション、長いスキャン、ロックの競合。
対処方法
ブロッカーを特定する: sys.dm_exec_requests、sys.dm_tran_locks、blocking_session_id 列を調べるか、sp_who2 / sp_whoisactive を使う。長いトランザクションを短くしてコミットする。必要なら LOCK_TIMEOUT を調整する。読み取りの多いシステムでは RCSI/スナップショット分離でリーダーとライターの競合を減らす。
同じデータベースの他の項目
- 18456Login failed for user(ユーザーのログイン失敗)
- 8152String or binary data would be truncated(文字列またはバイナリデータが切り詰められる)
- 2628String or binary data would be truncated in table, column ...; truncated value(文字列またはバイナリデータが切り詰められる (テーブル/列/値を表示))
- 9002The transaction log for database is full due to ...(トランザクションログが満杯)
- 1105Could not allocate space for object in database because the filegroup is full(ファイルグループが満杯のため領域を割り当てられない)
- 208Invalid object name(無効なオブジェクト名)
- 229The SELECT/EXECUTE permission was denied on the object(オブジェクトに対する SELECT/EXECUTE 権限が拒否された)