Microsoft® SQL Server™ 允許建立與稱為連結的伺服器的 OLE DB 資料來源的連結。在連結到 OLE DB 資料來源之後,可以:
從 OLE DB 資料來源引用行集,作為 Transact-SQL 陳述式中的表。
將命令傳遞給 OLE DB 資料來源,並包含結果行集,作為 Transact-SQL 陳述式中的表。
每個分散式查詢都可以引用多個連結的伺服器,而且可以對每個連結的伺服器分別執行更新或讀取操作。單個分散式查詢可以對某些連結的伺服器執行讀取操作,並且對其它連結的伺服器執行更新操作。通常情況下,每當某個事務可能更新多個連結的伺服器中的資料時,Microsoft SQL Server 都要求相應的 OLE DB 提供者支援分散式交易。因此,連結的伺服器上所支援的查詢類型取決於 OLE DB 提供者中對事務的支援層級。OLE DB 為交易管理定義了兩個可選的介面:
ITransactionLocal 支援 OLE DB 資料來源中的本地事務。
ITransactionJoin 允許提供者連接包含其它資源管理員的分散式交易。
所有支援 ITransactionJoin 的提供者也都支援 ITransactionLocal。
如果在串連是自動認可模式時執行分散式查詢,則應用以下規則:
對於不支援 ItransactionLocal 的提供者,只允許執行讀取操作。
對於支援 ITransactionLocal 的提供者,允許執行所有更新操作。
主控 SQL Server 會自動調用每個參與更新操作的連結的伺服器中的 ITransactionLocal,以啟動本地事務,並在語句執行成功時提交或在語句執行失敗時復原。
如果分散式查詢是針對分散式資料分割檢視或者是在串連為顯式或隱性事務時執行,則應用下列規則:
對於不支援 ITransactionJoin 的提供者,只允許執行讀取操作。不支援任何事務或只支援 ITransactionLocal 的提供者不能參與更新操作。
如果 SET XACT_ABORT 設定為 ON,則對於支援 ITransactionJoin 的任意提供者都允許執行所有的更新操作。主控 SQL Server 會自動調用每個參與更新操作的連結的伺服器中的 ITransactionJoin,以便在分散式交易中登記該伺服器。然後當主控伺服器表示要提交或復原事務時,MS DTC 將提交或者復原。
如果 SET XACT_ABORT 設定為 OFF,則連結的伺服器還必須支援嵌套事務,才能對其執行更新操作。當會話已經有一個現有事務時,如果提供者支援調用 ITransactionLocal::StartTransaction,則支援嵌套事務。這使 SQL Server 得以復原分散式查詢中的單個語句,而不是復原整個事務。
上述規則意味著提供者的下列限制不支援嵌套事務:僅在 XACT_ABORT 選項設定為 ON 時,分散式交易中才允許更新操作。
http://www.bkjia.com/PHPjc/631194.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631194.htmlTechArticleMicrosoftreg; SQL Server#8482; 允許建立與稱為連結的伺服器的 OLE DB 資料來源的連結。在連結到 OLE DB 資料來源之後,可以: 從 OLE DB 資料來源引用行集,作...