まず、SQL Server 2005のデッドロックの実際の根本原因を知りたいのですが、2つのプロセスが同じ行をテーブルにアクセスすると、それがありますか?SQL Server 2005でデッドロックを解除する方法は?
とにかく、同じ構造を持つ2つのテーブル_Table_Now_
と_Table_History_
を考えてみましょう。
NAME
という1つの列があるとします。
だから、一つのプロセスが_Table_Now_
でNAME='BLUE'
でレコードを更新しようとすると、まず、それが_Table_History_
にNAME='BLUE'
で現在の行を配置する必要があり、その後 _Table_Now_
を更新し、また_Table_History_
から以前に現在の行を削除します。
削除中にデッドロックが発生します。私はなぜなのか理解していない?
私を案内してください! Bが終了し、BはAのみが何
を完了したときに、\継続開始する時期Aがちょうど続ける\開始しますので
デッドロックには通常、複数の同時トランザクションが含まれます。 1つのトランザクションについて説明しました。デッドロックに含まれる他のトランザクションは何ですか? – NPE
良い方法は、 'with(NOLOCK)'や 'with(ROWLOCK)'などのクエリごとにヒントを与えてデッドロックを回避することです。他の人が続けることを許可するID – AbstractChaos
これ以上の情報がなければ、助けが難しいだろう。ここでデッドロックを分析するためにSQLプロファイラを使用する方法のリンクhttp://msdn.microsoft.com/en-us/library/ms188246.aspx –