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