在 SQL Server Native Client 中使用快照集隔離
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)
重要
SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC Driver for SQL Server。 如需 SQL Server 資料庫引擎元件隨附的 SQLNCLI(版本 2012 到 2019),請參閱此 支援生命週期例外狀況 。
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 驅動程式提供快照集隔離的支援,不過 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值。
如需交易中如何支援快照集隔離的資訊,請參閱 資料指標交易隔離等級 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應