AlwaysOn 可用性組或資料庫映象不支援跨資料庫事務和分散式事務
原文:
AlwaysOn 可用性組或資料庫映象不支援跨資料庫事務和分散式事務。 這是因為以下原因無法保證事務的原子性/完整性:
l 對於跨資料庫事務:每個資料庫獨立提交。因此,即使對於單個可用性組中的資料庫,在一個資料庫提交事務後、但是在另一個資料庫提交前可能發生故障轉移。對於資料庫映象,此問題很複雜,因為在故障轉移後,映象資料庫所在的伺服器例項通常不同於其他資料庫的伺服器例項,即使在兩個相同夥伴之間對兩個資料庫進行映象,也無法保證兩個資料庫同時進行故障轉移。
l 對於分散式事務:故障轉移後,新主體伺服器/主副本無法連線到前一個主體伺服器/主副本的分散式事務處理協調器。因此,新主體伺服器/主副本無法獲取事務狀態。
以下資料庫映象示例說明了如何可能出現邏輯上的不一致。 在此示例中,應用程式使用跨資料庫事務插入兩行資料:將其中一行插入映象資料庫 A 中的表,將另一行插入另一個資料庫 B 中的表。 資料庫 A 在具有自動故障轉移功能的高安全性模式下進行映象。 提交事務時,資料庫 A 不可用,映象會話將故障自動轉移到資料庫 A 的映象資料庫。
故障轉移之後,跨資料庫事務可能會在資料庫 B 上成功提交,但不可能會在故障轉移的資料庫中成功提交。 如果在發生故障之前,資料庫 A 的原始主體伺服器未能將跨資料庫事務的日誌傳送到映象伺服器,則可能會出現這種情況。 故障轉移之後,該事務將不存在於新的主體伺服器上。 資料庫 A 和資料庫 B 出現不一致,因為在資料庫 B 中插入的資料保持完好無損,而在資料庫 A 中插入的資料已經丟失。
使用 MS DTC 事務時可能會出現類似的情況。 例如,故障轉移後,新主體將訪問 MS DTC。 但是 MS DTC 不能識別新的主體伺服器,因而會終止被認為已在其他資料庫中提交了的、所有“準備提交”的事務。
重要提示
將資料庫映象或可用性組與 DTC 搭配使用不會導致 SQL Server 安裝失去支援。 但是,如果資料庫為資料庫映象會話或可用性組的一部分,且在資料庫中使用了 DTC,則僅當支援問題與將資料庫映象或可用性組與 DTC 搭配使用無關時將由 Microsoft 組織調查。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/81227/viewspace-1208783/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫映象和跨資料庫事務資料庫
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- 資料庫分散式事務的實現原理!資料庫分散式
- 資料庫事務整理資料庫
- 分散式事務和資料來源配置分散式
- 資料庫事務與 MySQL 事務總結資料庫MySql
- 淺談資料庫事務資料庫
- 說說資料庫事務資料庫
- 資料庫事務的特徵資料庫特徵
- 資料庫事務概論資料庫
- 資料庫事務 ACID資料庫
- 資料庫事務隔離資料庫
- 資料庫事務以及事務的四個特性資料庫
- MySQL資料庫分散式事務XA的實現原理分析MySql資料庫分散式
- 評價分散式事務資料庫的5個標準分散式資料庫
- Dgraph 1.2.8 釋出,事務性分散式圖形資料庫分散式資料庫
- 分散式資料庫事務的兩階段提交介紹分散式資料庫
- 有關分散式資料庫事務處理的問題分散式資料庫
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- MCMySQL 資料庫 索引和事務ktkMySql資料庫索引
- 資料庫事務與事務的隔離級別資料庫
- Laravel 開啟資料庫事務Laravel資料庫
- 資料庫事務入門指南資料庫
- MySQL資料庫本地事務原理MySql資料庫
- 資料庫主要物件及事務資料庫物件
- 請教,資料庫不支援事務怎麼辦?資料庫
- 著名的分散式事務資料庫谷歌Spanner設計有坑!分散式資料庫谷歌
- 分散式資料庫事務故障恢復的原理與實踐分散式資料庫
- Calvin:分割槽資料庫系統的快速分散式事務資料庫分散式
- java DB 雙資料來源和資料庫事務配置Java資料庫
- JDBC、JDBC框架、資料庫事務、資料庫連線池JDBC框架資料庫
- 從 Oracle 轉型 MySQL 分散式事務資料庫的實戰旅途OracleMySql分散式資料庫
- 【MySQL】資料庫事務深入分析MySql資料庫
- [專業術語]資料庫事務資料庫
- 資料庫事務隔離級別資料庫
- SQL基礎-->資料庫事務(TRANSACTION)SQL資料庫
- 資料庫對比系列之三(PG事務與MySQL事務)資料庫MySql
- 分散式事務系列 - 解決跨庫轉賬問題分散式