2016-11-24 5 views
1

過度に更新されたテーブルからデータを取得する必要があります。汚い読書は私にとっては問題ではありません。私はストアドプロシージャでコミットされていないreadを使用することに決めました。データベーストランザクションレベルを読み取りからコミットされていない状態に復元する適切な方法

は、その後、私は選択の前にこの行を追加:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 

私はこのコードの範囲はNOLOCKとは異なり、接続であることを学びました。あなたの仕事が終わった後にデフォルトに変更する必要があると聞きましたよね?

は、私はちょうどラインの

SET TRANSACTION ISOLATION LEVEL READ COMMITTED 

エンドを追加する必要がありますか?私は、作業が完了した後に孤立レベルが変更されたウェブ上の例を見つけることができませんでした。例はありますか?分離レベルのオプションのうち1つだけ

+1

SPROC内で設定され、トランザクション・レベルは、発信者に継承されることはありません。 – user2864740

答えて

2

、一度に設定することができ、それが明示的に変更されるまでは、その接続のために設定されたままです。文のFROM句の表ヒントで表のロックまたはバージョニングの動作が異なる場合を除き、トランザクション内で実行されるすべての読取り操作は、指定された分離レベルのルールの下で動作します。

...

オブジェクトを返しますが、オブジェクトが呼び出された時に分離レベルが有効レベルにリセットされる制御するときには、ストアドプロシージャまたはトリガに設定されたトランザクション分離レベルを発行する場合。たとえば、REPEATABLE READをバッチで設定し、バッチが分離レベルをSERIALIZABLEに設定するストアドプロシージャを呼び出すと、ストアドプロシージャがバッチに制御を戻すときに分離レベルの設定がREPEATABLE READに戻ります。

https://msdn.microsoft.com/en-us/library/ms173763.aspx

関連する問題