質問

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にアップグレードした後、以下を実行しましたか?

  1. DBCC updetwusgae
  2. フルカンで統計を更新します
  3. すべてのインデックスを再構築します

統計BLOBは2000年からSQL Server 2008に大幅に変更され、上記の手順はアップグレード後に非常に重要です。多くのPPLがパフォーマンスの問題に遭遇したが、デッドロックではないのを見てきました。あなたがこれまでにいないなら、私は上記のすべてをやってみて、その後問題を再現しようとします。

とはいえ、2008ボックスのselect @@バージョンの結果は何ですか? 1行またはいくつかの行を更新していますか?

他のヒント

容疑者 これが異なるバージョンの処理のオプティマザーに関連している可能性があること エスカレーションをロックします 違う。チェックしてもらえますか Lock:Escalation イベント?

プロファイラーを実行してすべてのデッドロックグラフを記録すると、ページを含むデッドロックが発生するテーブルを正確に確認できます。それはそれを絞り込むのに役立つはずです。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top