次の方法で共有


スナップショット分離を使用した作業

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

OLE DB ドライバーのダウンロード

SQL Server 2005 (9.x) では、OLTP (オンライン トランザクション処理) アプリケーションのコンカレンシーの強化を目的として、新しく "スナップショット" 分離レベルが導入されました。 以前のバージョンの SQL Server では、コンカレンシーはロックだけを基にしていました。そのため、アプリケーションによってはブロックやデッドロックなどの問題が生じることがありました。 スナップショット分離は行のバージョン管理の機能強化に依存しており、リーダーとライターのブロッキングを回避することでパフォーマンスを向上することを目的としています。

スナップショット分離の下で開始されたトランザクションは、トランザクションの開始時点のデータベース スナップショットを読み取ります。 スナップショット トランザクション コンテキスト内で開かれたキーセット サーバー カーソル、動的サーバー カーソル、および静的サーバー カーソルは、シリアル化可能なトランザクション内で開かれた静的カーソルとほぼ同様に動作します。 しかし、スナップショット分離レベルの下でカーソルが開かれると、ロックが設定されません。 このファクトにより、サーバー上のブロッキングが減少します。

OLE DB Driver for SQL Server

OLE DB Driver for SQL Server では、SQL Server 2005 (9.x) で導入されたスナップショット分離の使用に関する機能が強化されています。 具体的には、DBPROPSET_DATASOURCEINFO プロパティ セットと DBPROPSET_SESSION プロパティ セットへ変更が加えられています。

DBPROPSET_DATASOURCEINFO

DBPROP_SUPPORTEDTXNISOLEVELS プロパティで使用される DBPROPVAL_TI_SNAPSHOT 値が追加され、DBPROPSET_DATASOURCEINFO プロパティ セットではスナップショット分離レベルがサポートされるようになりました。 この新しい値は、データベースでバージョン管理が有効になっているかどうかにかかわらず、スナップショット分離レベルがサポートされることを示します。 次に表に DBPROP_SUPPORTEDTXNISOLEVELS の値の一覧を示します。

プロパティ ID 説明
DBPROP_SUPPORTEDTXNISOLEVELS 型 : VT_I4

R/W: 読み取り専用

説明 : サポートされるトランザクション分離レベルを指定するビットマスク。 次の値を 0 個以上指定できます。

DBPROPVAL_TI_CHAOS

DBPROPVAL_TI_READUNCOMMITTED

DBPROPVAL_TI_BROWSE

DBPROPVAL_TI_CURSORSTABILITY

DBPROPVAL_TI_READCOMMITTED

DBPROPVAL_TI_REPEATABLEREAD

DBPROPVAL_TI_SERIALIZABLE

DBPROPVAL_TI_ISOLATED

DBPROPVAL_TI_SNAPSHOT

DBPROPSET_SESSION

DBPROP_SESS_AUTOCOMMITISOLEVELS プロパティで使用される DBPROPVAL_TI_SNAPSHOT 値が追加され、DBPROPSET_SESSION プロパティ セットではスナップショット分離レベルがサポートされるようになりました。 この新しい値は、データベースでバージョン管理が有効になっているかどうかにかかわらず、スナップショット分離レベルがサポートされることを示します。 次の表に、DBPROP_SESS_AUTOCOMMITISOLEVELS の値の一覧を示します。

プロパティ ID 説明
DBPROP_SESS_AUTOCOMMITISOLEVELS 型 : VT_I4

R/W: 読み取り専用

説明 : 自動コミット モードのときのトランザクション分離レベルを示すビットマスクを指定します。 このビットマスクには、DBPROP_SUPPORTEDTXNISOLEVELS に設定できる値と同じ値を設定できます。

Note

SQL Server よりも前のバージョンの SQL Server 2005 (9.x) を使用しているときに DBPROPVAL_TI_SNAPSHOT を設定すると、エラー DB_S_ERRORSOCCURRED または DB_E_ERRORSOCCURRED が発生します。

トランザクションでスナップショット分離がサポートされる方法については、「ローカル トランザクションのサポート」を参照してください。

参照

OLE DB Driver for SQL Server の機能
行セットのプロパティと動作