AlwaysOn的可用性群組在設定複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤

前一陣子研究AG搭配複寫時會產生Cannot promote the transaction to a distributed transaction because there is an active save point in this transaction錯誤訊息

當時可以google到的文章非常少,實在不知道為何會出現這樣的錯誤。後來發現有幾篇文章提到這應是一個SQL的BUG。當我們在AG設定群組的資料庫支援DTC後接下來設定複寫都會失敗,原因是因為設定複寫的一堆SP中都會開交易且在交易中放儲存點,然而AG開啟DTC後是不支援放儲存點的,所以才會發生錯誤。

當時的解法就是先去AG將DTC選項勾掉後再去設定複寫,等複寫設定完成後再去AG設定開啟DTC

這問題我在SQL2016發現,然而SQL2017該問題還是存在。近期測試SQL2019時發現該問題已經修復了。看了一下論壇討論發現SQL2017的CU13已修正該問題而SQL2016則是SP2的CU4,我剛剛試著將SQL2017升到CU17後再去測試,發現果然問題已經修正了。

這問題當時卡了我很久,如果你有遇到AG要設定複寫時發生的疑難雜症,可以朝這方向試試看歐,分享給各位。

我是ROCK

rockchang@mails.fju.edu.tw