- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:デッドロックエラー)
C#からSQLServerにトランザクション実行時にデッドロックエラーが発生する理由
このQ&Aのポイント
- C#からSQLServerにトランザクションを実行する際、WITH(TABLOCK,XLOCK)を付加すると、トランザクションが他のプロセスとデッドロックし、エラーが発生することがあります。
- トランザクションはConnectOpen、BeginTransaction、SqlDataReader、UPDATE or INSERT、ExecuteNonQuery、CommitCommand、ConnectCloseの順番で実行されます。
- 単体では問題がないが、複数から同時に実行するとデッドロックが発生するのは、トランザクション同士が同じリソースをロックしようとして競合するためです。
- みんなの回答 (2)
- 専門家の回答
補足
ご回答ありがとうございます。 SELEC * FROM A WITH(TABLOCK,XLOCK) WHERE b = * という単純な文です。 テーブルAもJOINしているわけでもなく、 単体でSELECT、UPDATEを利用しています。 ただ、複数のクエリを実行しているだけです。