共用方式為


使用快照隔離

SQL Server 2005 引進了新的「快照集」隔離等級,旨在增強在線事務處理 (OLTP) 應用程式的並行。 在舊版的 SQL Server 中,並行存取僅以鎖定為基礎,這可能會導致某些應用程式的封鎖和死結問題。 快照集隔離取決於數據列版本設定的增強功能,並旨在藉由避免讀取器寫入器封鎖案例來改善效能。

在快照隔離下啟動的交易,會在交易啟動時讀取資料庫快照集。 其中一個結果是,索引鍵集、動態和靜態伺服器數據指標,在快照集交易內容內開啟時,其行為就像在可串行化交易中開啟的靜態數據指標一樣。 不過,當數據指標在快照隔離等級鎖定下開啟時,不會進行,這可以減少伺服器上的封鎖。

SQL Server Native Client OLE DB 提供者

SQL Server Native Client OLE DB 提供者具有增強功能,可利用 SQL Server 2005 中引進的快照集隔離。 這些增強功能包括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 之前的 SQL Server 版本時設定了DBPROPVAL_TI_SNAPSHOT,就會發生DB_S_ERRORSOCCURRED或DB_E_ERRORSOCCURRED錯誤。

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

SQL Server Native Client ODBC Driver

SQL Server Native Client ODBC 驅動程式提供快照集隔離的支持,不過 SQLSetConnectAttrSQLGetInfo 函式的增強功能。

SQLSetConnectAttr

SQLSetConnectAttr 函式現在支援使用 SQL_COPT_SS_TXN_ISOLATION 屬性。 將SQL_COPT_SS_TXN_ISOLATION設定為 SQL_TXN_SS_SNAPSHOT表示交易將在快照集隔離等級下進行。

SQLGetInfo

SQLGetInfo 函式現在支援已新增至SQL_TXN_ISOLATION_OPTION資訊類型的SQL_TXN_SS_SNAPSHOT值。

如需交易中如何支援快照集隔離的資訊,請參閱 數據指標交易隔離等級

另請參閱

SQL Server Native Client 功能
資料列集屬性和行為