Microsoftのサイトhttp://msdn.microsoft.com/en-us/library/ms173763.aspxで読んだ
そのSQLServerは、データベースが回復されている場合を除いて、データの読み取り時にロックを要求しません。
READ_COMMITTED_SNAPSHOT / SNAPSHOTISOLATIONを使用しているSQLServerが共有ロックをまったく使用していないということですか?そんなことがあるものか?
たとえば、2つのトランザクションがある場合。最初のトランザクションT1は、いくつかの行を更新しようとしています。2番目のトランザクションT2は、同じ行の読み取りを開始します(このトランザクションは、彼を出力バッファー、応答バッファー、またはSQL Serverで呼び出されるものにコピーします)。同時に、トランザクションT1はその行の更新を開始します(最初にバージョン管理された行を作成しました)。
トランザクションT2がコミットされていないデータを読み取る可能性はありませんか?トランザクションT2は、T1が更新する前にその行のコピーを開始したため、その行に排他ロックがないことを忘れないでください。
この状況はさらに可能であり、データのコピー中にその行に共有ロックを設定せずにこれを回避するにはどうすればよいですか?