MSDNオンライン記事「 SQL Serverのスナップショット分離 は次のように述べています。
自己矛盾する段落ではありませんか(「まで」と「保持」)。
次に、接続を閉じてプールに戻した後、「最後のSET TRANSACTION ISOLATION LEVELステートメントからの分離レベルが保持される」場合、どのようにすべきか理解する:
プールからの接続には、その接続を使用する最後のクライアントによって設定された分離レベルがあります。はい、本当に怖いです。
長い点と短い点は、接続の分離レベルを変更する場合は、閉じる前に明示的にREAD COMMITTED
に戻す必要があることです。バッチの開始時に必要な分離レベルを明示的に宣言し、他の誰かがずさんなコードによって影響を受けないようにし、最後にデフォルトに戻すことをお勧めします。
この振る舞いは、困惑しながらも明らかに by-design です。
自己矛盾する段落ではありませんか(「まで」と「保持」)
私にはわかりませんが、他の方法で読むことができます。ドキュメントをより明確にするために更新する場合は、これを要求する適切な場所は Microsoft Connect です。ここの人々はマイクロソフトのドキュメントを管理していません。
デフォルトの分離レベルは任意の値になります(プール内の異なる接続には異なる分離レベルがあり、その値は再オープンされる接続に依存します)?
プールされた接続を再利用している場合、はい、「既存の」分離レベルは、プールされた接続が最後に閉じられたときに有効だった分離レベルです。接続時に必要な分離レベルを明示的に設定することをお勧めします。
またはプール内のすべての接続のすべてのデフォルト値が最後のものに変更されますか?しかし、前もってまだかなり不明ですか?
番号。
SQL Server 2014では、プールされた接続の分離レベルがリセットされます ほとんどのTDSプロトコルバージョン。以前のバージョンのSQL Serverでは、分離レベルはリセットされませんでした。