使用快照隔離
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 而設定的值相同。 |
注意
DBPROPVAL_TI_SNAPSHOT 如果使用SQL Server 2005 之前的 SQL Server 版本時,就會發生錯誤DB_S_ERRORSOCCURRED或DB_E_ERRORSOCCURRED。
如需如何在交易中支援快照集隔離的詳細資訊,請參閱支援本機交易。
SQL Server Native Client ODBC 驅動程式
SQL Server Native Client ODBC 驅動程式透過SQLSetConnectAttr和SQLGetInfo函式所做的增強功能,提供快照集隔離的支援。
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值。
如需交易中如何支援快照集隔離的資訊,請參閱 資料指標交易隔離等級。