1205: Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim(デッドロックの犠牲者として選択された)
SQL Server意味
2 つ以上のトランザクションが互いに相手の保持するロックを待っている (デッドロック)。循環を断ち切るため、SQL Server は 1 つのトランザクションを犠牲者として選び、ロールバックする。
原因
テーブル/行を異なる順序でロックするトランザクション、長時間実行されるトランザクション、インデックスの欠如による広範なスキャン、ロックエスカレーション、高い同時実行が典型的な原因。
対処方法
アプリケーションでエラー 1205 を捕捉し、トランザクションを自動で再試行する。すべてのトランザクションで同じ順序でオブジェクトにアクセスし、トランザクションを短く保つ。デッドロックグラフを調べる: 詳細には拡張イベント (system_health セッション) またはトレースフラグ 1222 を使う。適切なインデックスを追加してスキャンとロックを減らす。必要なら READ COMMITTED SNAPSHOT (RCSI) 分離レベルを評価する。
同じデータベースの他の項目
- 2627Violation of PRIMARY KEY / UNIQUE KEY constraint. Cannot insert duplicate key in object(PRIMARY KEY / UNIQUE KEY 制約違反)
- 2601Cannot insert duplicate key row in object with unique index. The duplicate key value is ...(一意インデックスに重複キー行を挿入できない)
- 547The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint(FOREIGN KEY / CHECK 制約との競合)
- 18456Login failed for user(ユーザーのログイン失敗)