共用方式為


在 SQL Server Native Client 中使用快照集隔離

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) 未隨附:

  • SQL Server 2022 (16.x) 及更新版本
  • SQL Server Management Studio 19 與更新版本

不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 進行新的應用開發。

針對新專案,請使用下列其中一個驅動程式:

針對 SQL Server 資料庫引擎 (2012 到 2019 版) 的隨附元件 SQLNCLI,請參閱支援生命週期例外狀況

SQL Server 2005 (9.x) 引進了新的「快照」隔離等級,目的是增強線上交易處理 (OLTP) 應用程式的並行存取。 在舊版的 SQL Server 中,並行存取完全以鎖定為基礎,因此會導致某些應用程式發生封鎖及死結問題。 快照集隔離相依於對資料列版本設定的增強功能,目的是藉由避免發生讀取器-寫入器封鎖的案例來改善效能。

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

SQL Server Native Client OLE DB 提供者

SQL Server Native Client OLE DB 提供者具有增強功能,可利用 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 錯誤。

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

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 功能
資料列集屬性和行為