トランザクションと並行性に関する本を読んでいます。 1つの段落では、次のように述べられています。
そして次の文は:
私の質問は、これらの2つの文で「オンプレミスSQL Serverインスタンス」と「SQLデータベース」の違いは何ですか?
デフォルトの分離レベルとは何ですか?どのようにして見つけることができますか?デフォルトの分離レベルを確認するための特別なクエリはありますか?
これは Azure SQL Database を参照しており、デフォルトで RCSI を使用しています。
分離レベルSQL
データベースのデフォルトのデータベース全体の設定では、READ_COMMITTED_SNAPSHOTとALLOW_SNAPSHOT_ISOLATIONの両方のデータベースオプションをONに設定して、コミット読み取りスナップショット分離(RCSI)を有効にします。分離レベルの詳細については こちら をご覧ください。データベースのデフォルトの分離レベルは変更できません。ただし、接続で分離レベルを明示的に制御できます。
オンプレミスSQL Serverでは、デフォルトの分離レベルはRead Committedです。
「デフォルト」の分離レベルを見つけることは、ガチョウ追跡のビットです。これは、クエリが開始されるデータベース、およびデータベースレベルの設定を上書きするヒントがクエリに存在するかどうかによって異なります。
つまり、sys.databases
をクエリして、RCSIまたはSIが有効になっているかどうかを確認できます。
SELECT d.name,
d.is_read_committed_snapshot_on,
d.snapshot_isolation_state
FROM sys.databases AS d;
READ_COMMITTED_SNAPSHOT
は、技術的には分離レベルではないことに注意してください。むしろ、READ_COMMITTED
分離レベルを使用するセッションの読み取りの一貫性を提供するために、ロックではなく行のバージョン管理が使用されるように実装を制御するのはデータベースオプションです。