サーバー側で Linq2Sql を使用している Web サイトがあります。
ときどき (まだ原因は特定されていませんが)、開いているトランザクションが原因で Web サイト全体がロックされます。でブロッキング プロセスを確認master..sysprocessesできます。このプロセス ID から、ロックを実行しているプロセス ID が私の Web サイトの IIS プロセスであり、open_tran1 であるDBCC inputbufferことがわかりselect ... from MyTableます。オブジェクトの読み込み時に Linq2Sql によって生成されます。とにかく、私が書いた SQL ではないことは確かです。
古い「BeginTransaction .. Commit/RollbackTransaction」ブロックがないかコードベース全体をスキャンしました。なだ。すべてusing (var ts = new TransactionScope()) { ... }ブロックを使用しています。IIS プロセスにアタッチし、別のスレッドのクエリがブロックされたときにタイムアウト例外をキャッチしました。トランザクション ブロック内にぶら下がっている他のスレッドはありません。その間、ブロッキングプロセスはまったくなくなりません。
これをさらにトラブルシューティングする方法についてのアイデアはありますか?