分散式事務
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
分散式事務是指事務的參與者、支持事務的伺服器、資源伺服器以及事務管理器分別位於不同的分散式系統的不同節點之上。
為了實現分散式事務,需要使用下麵將介紹的兩階段提交協議:
階段一:開始向事務涉及到的全部資源發送提交前信息。此時,事務涉及到的資源還有最後一次機會來異常結束事務。如果任意一個資源決定異常結束事務,則整個事務取消,不會進行資源的更新。否則,事務將正常執行,除非發生災難性的失敗。為了防止會發生災難性的失敗,所有資源的更新都會寫入到日誌中。
階段二:只在階段一沒有異常結束的時候才會發生。此時,所有能被定位和單獨控制的資源管理器都將開始執行真正的數據更新。在分散式事務兩階段提交協議中,有一個主事務管理器負責充當分散式事務協調器的角色。事務協調器負責整個事務並使之與網路中的其他事務管理器協同工作。為了實現分散式事務,必須使用一種協議在分散式事務的各個參與者之間傳遞事務上下文信息。
分散式事務處理 (TP) 系統旨在協助在分散式環境中跨異類的事務識別資源的事務。在分散式 TP 系統的支持下,應用程式可以將不同的活動合併為一個事務性單元,這些活動包括從“消息隊列”隊列檢索消息、將消息存儲在 Microsoft SQL Server 資料庫中、將所有現有的消息引用從 Oracle Server 資料庫中移除,等等。因為分散式事務跨多個資料庫資源,故強制 ACID 屬性維護所有資源上的數據一致性是很重要的。
在 Transact-SQL 中啟動的分散式事務的結構相對比較簡單:
1、Transact-SQL腳本或應用程式連接執行啟動分散式事務的 Transact-SQL 語句。
2、執行該語句的 Microsoft® SQL Server™ 成為事務中的主控伺服器。
3、然後腳本或應用程式對鏈接的伺服器執行分散式查詢,或對遠程伺服器執行遠程存儲過程。
4、當執行了分散式查詢或遠程過程調用後,主控伺服器將自動調用MS DTC以便登記分散式事務中鏈接的伺服器和遠程伺服器。
5、當腳本或應用程式發出COMMIT或ROLLBACK語句時,主控SQL Server將調用MS DTC管理兩階段提交過程,或者通知鏈接的伺服器和遠程伺服器回滾其事務。
控制分散式事務的Transact-SQL語句很少,因為多數工作都由 Microsoft® SQL Server™和 MS DTC 在內部完成。Transact-SQL 腳本或應用程式中所需的 Transact-SQL 語句只須:啟動分散式事務。對鏈接的伺服器執行分散式查詢,或對遠程伺服器執行遠程過程調用。
調用標準 Transact-SQL COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK 語句完成事務。
對於任意一個 Transact-SQL 分散式事務,處理 Transact-SQL腳本或連接的 SQL Server 將自動調用 MS DTC 以協調事務的提交或回滾。
REMOTE_PROC_TRANSACTIONS 選項是一個兼容性選項,隻影響對使用sp_addserver定義的遠程伺服器所進行的遠程存儲過程調用。有關遠程存儲過程的更多信息,請參見遠程存儲過程構架。該選項不適用於在使用sp_addlinkedserver定義的鏈接伺服器上執行存儲過程的分散式查詢。有關分散式查詢的更多信息,請參見分散式查詢。


