SQL Server 2000からSQL Server2008へのデッドロックエラー
-
16-10-2019 - |
質問
SQL Server 2000からSQL Server 2008にデータを移行した後、データベースでより多くの行を見つけるテーブルでトランザクションを実行すると、エラーが発生します。
Transaction (Process ID 59) was deadlocked on lock resources with
another process and has been chosen as the deadlock victim.
Rerun the transaction.
テーブルには3つのトリガーがあります(挿入、更新、削除)。この問題を解決するにはどうすればよいですか?
解決
SQL Server 2008にアップグレードした後、以下を実行しましたか?
- DBCC updetwusgae
- フルカンで統計を更新します
- すべてのインデックスを再構築します
統計BLOBは2000年からSQL Server 2008に大幅に変更され、上記の手順はアップグレード後に非常に重要です。多くのPPLがパフォーマンスの問題に遭遇したが、デッドロックではないのを見てきました。あなたがこれまでにいないなら、私は上記のすべてをやってみて、その後問題を再現しようとします。
とはいえ、2008ボックスのselect @@バージョンの結果は何ですか? 1行またはいくつかの行を更新していますか?
他のヒント
私 容疑者 これが異なるバージョンの処理のオプティマザーに関連している可能性があること エスカレーションをロックします 違う。チェックしてもらえますか Lock:Escalation
イベント?
プロファイラーを実行してすべてのデッドロックグラフを記録すると、ページを含むデッドロックが発生するテーブルを正確に確認できます。それはそれを絞り込むのに役立つはずです。
所属していません dba.stackexchange