• ベストアンサー

デッドロック

sqlserver2000に対してクライアントツール用に開発したAccess2000のadpファイルからデータの更新を行うと、以下のようなエラーが発生するのですが、どのような場合以下のエラーが発生するのかご意見を頂きたいと思います。 "トランザクション(プロセスID89)が、lockリソースでほかのプロセスとデッドロックしました。トランザクションがデッドロックの対象として選択されています。トランザクションを再実行してください。"

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

デッドロックとは、複数のプログラムがお互いの資源の解放を待ちあって、処理が進まない状態のことを言います。 例えば、下記の様なプログラムが有った場合、 ===== プログラム1 ===== 1.テーブルAをロック 2.テーブルBをロック 3.何らかの処理 4.テーブルBを解放 5.テーブルAを解放 ===== プログラム2 ===== 1.テーブルBをロック 2.テーブルAをロック 3.何らかの処理 4.テーブルAを解放 5.テーブルBを解放 プログラム1がテーブルAをロックし、同時にプログラム2がテーブルBをロックすると、プログラム1はプログラム2がテーブルBを解放するのを待ち、プログラム2はプログラム1がテーブルAを解放すのを待つので、処理が進みません。 詳しくは下記のサイトを参照して下さい。 http://www.microsoft.com/japan/msdn/sqlserver/columns/webtech/webtech3.asp http://www.atmarkit.co.jp/fnetwork/rensai/sql28/sql1.html

sanbokick
質問者

お礼

回答ありがとうございます。 大変わかりやすい説明で助かりました。

関連するQ&A