分享方式:


使用快照隔離

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 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

DBPROPSET_DATASOURCEINFO 屬性集已變更,現藉由加入用於 DBPROP_SUPPORTEDTXNISOLEVELS 屬性中的 DBPROPVAL_TI_SNAPSHOT 值來支援快照隔離等級。 這個新值代表不論資料庫上是否啟用版本控制,快照隔離等級都受到支援。 下表列出 DBPROP_SUPPORTEDTXNISOLEVELS 值:

屬性識別碼 描述
DBPROP_SUPPORTEDTXNISOLEVELS 類型:VT_I4

R/W:唯讀

說明:指定受支援之交易隔離等級的位元遮罩。 下列零或多個項目的組合:

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

DBPROPSET_SESSION 屬性集已變更,現藉由加入用於 DBPROP_SESS_AUTOCOMMITISOLEVELS 屬性中的 DBPROPVAL_TI_SNAPSHOT 值來支援快照隔離等級。 這個新值代表不論資料庫上是否啟用版本控制,快照隔離等級都受到支援。 下表列出 DBPROP_SESS_AUTOCOMMITISOLEVELS 值:

屬性識別碼 描述
DBPROP_SESS_AUTOCOMMITISOLEVELS 類型:VT_I4

R/W:唯讀

說明:指定自動認可模式時之交易隔離等級的位元遮罩。 在此位元遮罩中設定的值,與針對 DBPROP_SUPPORTEDTXNISOLEVELS 而設定的值相同。

注意

如果使用早於 SQL Server 2005 (9.x) 的 SQL Server 版本時設定 DBPROPVAL_TI_SNAPSHOT,就會發生 DB_S_ERRORSOCCURRED 或 DB_E_ERRORSOCCURRED 錯誤。

如需如何在交易中支援快照集隔離的詳細資訊,請參閱支援本機交易

另請參閱

OLE DB Driver for SQL Server 功能
資料列集屬性和行為