Windows サービスに要求を送信して、多数のテーブルのレコードを削除/更新する ASP.NET Web アプリケーションがあります。Windows サービスはストアド プロシージャでこれを行い、その呼び出しは ADO.NET TransactionScope にあります。
関連するレコードの数が多い場合、20 ~ 30 秒かかり、その間、ユーザーがそれらのテーブルを含む ASP.NET Web アプリケーションの他の部分 (別の接続にある) にアクセスしようとすると、タイムアウト エラーが発生します (トランザクションがまだ進行中のため)
選択クエリを変更して、with(nolock)
ヒントを含めるかSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
、選択ストアド プロシージャに含めることができます。ただし、これは、現時点では実行できないすべての選択ストアド プロシージャを変更する必要があることを意味します。
また、現時点では不可能なSNAPSHOT
データベースの分離モデルを設定する必要があるため、トランザクション分離モデルを使用できません。SNAPSHOT
代替案はありますか?