前一陣子研究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