共用方式為


資料庫鏡像和跨資料庫交易

更新: 2006 年 12 月 12 日

跨資料庫交易或分散式交易不支援資料庫鏡像。這是因為無法確保交易不可部分完成性/完整性,原因如下:

  • 對於跨資料庫交易:在容錯移轉之後,鏡像資料庫會位於不同的伺服器執行個體上,而且通常會在非鏡像資料庫以外的其他資料庫上。即使兩個資料庫是在相同的兩個夥伴之間建立鏡像,也無法確保這兩個資料庫會同時容錯移轉。
  • 對於分散式交易:在容錯移轉之後,新的主體伺服器無法連接到先前使用相同資源識別碼的主體伺服器之分散式交易協調器。因此,新的主體伺服器無法取得交易狀態。

下列範例將說明如何發生邏輯不一致的情況。在此範例中,應用程式會使用跨資料庫交易來插入兩個資料列:其中一個資料列會插入鏡像資料庫 A 中的資料表,而另一個資料列則插入另一個資料庫 B 中的資料表。然後,資料庫 A 會在具有自動容錯移轉的高安全性模式下進行鏡像。認可交易時,資料庫 A 會無法使用,而鏡像工作階段便自動容錯移轉至資料庫 A 的鏡像。

容錯移轉之後,可能會成功在資料庫 B 上認可跨資料庫交易,但無法在容錯移轉資料庫上認可。如果資料庫 A 的原始主體伺服器在故障之前尚未將跨資料庫交易的記錄傳送至鏡像伺服器,就可能會發生這種情況。容錯移轉之後,該筆交易不會存在新主體伺服器上。資料庫 A 和 B 會成為不一致,因為插入資料庫 B 的資料仍維持完整,但是插入資料庫 A 的資料已經遺失。

使用 MS DTC 交易時可能也會發生類似的狀況。例如,在容錯移轉之後,新的主體會連絡 MS DTC。不過,MS DTC 不了解新的主體伺服器,而且它會結束「準備認可」的所有交易,因為它認為這些交易已在其他資料庫中認可。

請參閱

概念

分散式交易 (Database Engine)
MS DTC 分散式交易

其他資源

資料庫鏡像

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

變更的內容:
  • 修訂說明,指出跨資料庫交易或分散式交易不支援資料庫鏡像,並說明原因。