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-server