Table1という名前のテーブルを使用するレポートアプリケーションがあります。新しいバッチ更新プロセスを展開します。
Table1への更新を実行します。
環境は以下のプロパティーで構成されています。
データベースはデフォルトの分離設定で設定されています。

アプリケーションとプロセスはデフォルトのトランザクション処理を使用します。

アプリケーションがプロセスによって使用されている行にアクセスできないことがわかります。
以下の要件があります。
アプリケーションがプロセスによってブロックされていないことを確認してください。

アプリケーションが一貫したデータビューを持つようにする

アプリケーションがダーティデータを読み取らないようにします。

問題を解決し、最小限の管理作業で要件を満たす必要があります。
あなたは何をするべきか?
正解:B
説明/参照:
Explanation:
データベースオプションALLOW_SNAPSHOT_ISOLATION ONを設定して、スナップショットアイソレーションを有効にする必要があります。
トランザクションで使用される前これにより、行バージョンを一時ファイルに格納するメカニズムが有効になります。
データベース(tempdb)
READ COMMITTEDは、SQL Serverのデフォルトの分離レベルです。次のように指定することでダーティリードを防ぎます
ステートメントは、変更されたがまだ他のトランザクションによってコミットされていないデータ値を読み取ることはできません。
他のトランザクションでも、個々のステートメントの実行間にデータを変更、挿入、または削除することができます。
現在のトランザクション内では、反復不可能な読み取り、つまり「ファントム」データになります。
間違った答え:
A:SERIALIZABLEは最も限定的な分離レベルです。なぜなら、それはキーの全範囲をロックして保持するからです。
トランザクションが完了するまでロックします。 REPEATABLE READを含み、制限を追加します
他のトランザクションがトランザクションによって読み込まれる範囲に新しい行を挿入することはできません。
トランザクションは完了しました。
参照先:https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-
サーバ