不適切な IsolationLevels を使用したデータベース接続で、アプリケーションに問題があるかどうかを把握しようとしています。私たちのアプリケーションは、SQL Server 2005 を使用する .Net 3.5 データベース アプリです。
接続が接続プールに返されたときに接続の IsolationLevel がリセットされないことを発見し (こちらを参照)、このブログ投稿で、作成された新しい TransactionScope ごとに独自の接続プールが割り当てられることを読んで本当に驚きました。
データベースの更新は (ビジネス オブジェクトを介して) TransactionScope 内で行われます (ビジネス オブジェクト グラフの更新ごとに新しいトランザクションが作成されます)。しかし、フェッチは明示的なトランザクションを使用しません。したがって、私が疑問に思っているのは、フェッチ操作 (デフォルトの IsolationLevel - Read Committed を使用する必要があります) が、更新に使用されたプールからの接続を再利用し、更新の IsolationLevel を継承するという状況に陥る可能性があるということです。 (RepeatableRead)? それとも、TransactionScope にラップされているため、更新は別の接続プールを使用することが保証されますか?
前もって感謝します、
グラハム