SQL Server 分布式事務(wù)的概念與包括事物
以下的文章主要介紹的是SQL Server 分布式事務(wù)的概念,我們大家都知道SQL Server 數(shù)據(jù)庫的分布式事務(wù)主要是涉及來自兩個或者是多個源的資源的相關(guān)事務(wù)。Microsoft® SQL Server™ 2000 支持分布式事務(wù)。
使用戶得以創(chuàng)建事務(wù)來更新多個 SQL Server 數(shù)據(jù)庫和其它數(shù)據(jù)源。
分布式事務(wù)包括:
資源管理器
控制分布式事務(wù)所涉及的每個資源的軟件稱為資源管理器。SQL Server 分布式事務(wù)由各個資源管理器內(nèi)的本地事務(wù)組成。每個資源管理器必須能夠與分布式事務(wù)內(nèi)的所有其它資源管理器相協(xié)調(diào),以提交或回滾自己的本地事務(wù)。SQL Server 可以作為分布式事務(wù)內(nèi)的資源管理器工作,并遵從用于分布式事務(wù)處理的 X/Open XA 規(guī)范。
事務(wù)管理器
提交或回滾分布式事務(wù)由稱為事務(wù)管理器的軟件組件控制。事務(wù)管理器與每個資源管理器相協(xié)調(diào),確保一起提交或回滾所有組成分布式事務(wù)的本地事務(wù)。Microsoft 分布式事務(wù)處理協(xié)調(diào)器 (MS DTC) 服務(wù)如事務(wù)管理器一樣工作。MS DTC 遵從用于分布式事務(wù)處理的 X/Open XA 規(guī)范。
兩階段提交 (2PC)
需要進行特殊的提交處理,以防止在管理跨越多個資源管理器的事務(wù)時出現(xiàn)問題。當刷新日志緩沖區(qū)使其可用時,提交大事務(wù)可能需要相對較長的時間。提交進程本身還可能遇到錯誤,需要強行回滾。如果事務(wù)管理器只是請求每個資源管理器提交,則可能從一些資源管理器返回成功狀態(tài),然后從某個資源管理器得到錯誤信息。這會導(dǎo)致沖突,因為所有SQL Server 分布式事務(wù)都應(yīng)回滾,而部分事務(wù)已提交。兩階段提交通過將提交分成兩相可以解決此問題:
準備
事務(wù)管理器給每個資源管理器發(fā)送一個準備提交的請求。然后,每個資源管理器執(zhí)行完成提交進程所需的所有大量占用資源的操作,如刷新所有日志緩沖區(qū)。資源管理器只保留維護事務(wù)完整性所需的最少的鎖,然后給事務(wù)管理器返回成功狀態(tài)。
提交
如果所有資源管理對發(fā)給它們的準備請求返回成功狀態(tài),事務(wù)管理器將給每個資源管理器發(fā)送提交命令。然后,每個資源管理器快速將事務(wù)記錄為已完成,并釋放上次控制的資源。如果有任何資源管理器對準備請求返回錯誤信息,事務(wù)管理器將給每個資源管理器發(fā)送回滾命令。
有幾種方法可以使應(yīng)用程序在分布式事務(wù)內(nèi)包括 SQL Server 2000:
如果應(yīng)用程序有本地事務(wù)并且發(fā)出分布式查詢,本地事務(wù)將升級到SQL Server 分布式事務(wù)。
發(fā)出 BEGIN DISTRIBUTED TRANSACTION 語句。
如果應(yīng)用程序有本地事務(wù)并且將 REMOTE_PROC_TRANSACTIONS 選項設(shè)置為>
使用用于 SQL Server 的 OLE DB 提供程序或 SQL Server ODBC 驅(qū)動程序的應(yīng)用程序,可以使用 OLE DB 方法或 ODBC 函數(shù)讓 SQL Server 連接聯(lián)接由應(yīng)用程序啟動的SQL Server 分布式事務(wù)。
【編輯推薦】