當Alwasyon group啟用了DTC_SUPPORT = PER_DB, 會導致無法建立replicaiton.無法修改已經存在的replication.
原因:
噹噹Alwasyon group啟用了DTC_SUPPORT = PER_DB,任何對於DMV的查詢都被認為是'user xact'.
這回導致下面的語句失敗
begin tran save tran tran1 select*Fromsys.tables
The 3933 error
'Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction'
Replication的建立/修改語句中大量包含了這種格式的語句,會導致其失敗
Workaround
===
1)啟用 start up trace flag 8580。(Impact:對於系統資料庫的語句會被當成常規的Transaction處理,而非DTC transaction,所以當Failover發生時,會影響正在執行的DTC transaction 可能會導致資料的不一致)
或者
2)在進行操作前暫時將DTC_Support關閉,之後再啟用。(如果操作時Failover發生,會影響正在執行的DTC transaction,所以建議在downtime時進行該操作)
ALTER AVAILABILITY GROUP dbName SET ( DTC_SUPPORT = none );