分散式交易 (Database Engine)

分散式交易跨越二或多個稱為資源管理員的伺服器。交易的管理必須由一種稱為交易管理員的伺服器元件在資源管理員之間協調。SQL Server Database Engine 的每個執行個體在分散式交易中可作為資源管理員來運作,而由交易管理員 (例如 Microsoft 分散式交易協調器 (MS DTC)) 或其他支援分散式交易處理的 Open Group XA 規格之交易管理員來協調分散式交易。如需詳細資訊,請參閱 MS DTC 文件集。

在單一 Database Engine 執行個體內部,跨越二或多個資料庫的交易,實際上就是分散式交易。執行個體是由內部來管理分散式交易;而對於使用者而言則是以本機交易來運作。

在應用程式中,分散式交易的管理與本機交易大致相同。交易結束時,應用程式便要求認可或回復交易。分散式認可必須另由交易管理員來管理,以便將網路失敗可能會造成某些資源管理員成功認可而其他資源管理員卻將交易回復的風險降至最低。這可藉由在兩個階段 (準備階段與認可階段) 中管理認可過程來達到,稱為兩階段認可交易 (Two-Phase Commit,2PC)。

  • 準備階段
    當交易管理員接收到認可的要求時,便傳送準備命令給所有參與交易的資源管理員。然後再由每個資源管理員進行可讓交易持續,並把放置交易記錄檔影像的所有緩衝區排清到磁碟上所需的一切動作。當每個資源管理員完成準備階段時,便將準備的成功或失敗結果傳回交易管理員。

  • 認可階段
    如果交易管理員從所有的資源管理員接收到準備成功,便傳送認可命令給每個資源管理員。然後資源管理員即可完成認可。如果全部的資源管理員都報告認可成功,交易管理員便傳送成功的通知給應用程式。若有任何資源管理員報告準備失敗,交易管理員便傳送回復命令給每個資源管理員並告知應用程式認可失敗。

Database Engine 應用程式可以透過 Transact-SQL 或資料庫 API 來管理分散式交易。