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