我工作的公司希望在我们的SQL Server支持的应用程序中使用Always on availability groups体系结构。我们直接安装了3个数据库,其中一个是按配置划分的,我们目前使用MSDTC来协调三者之间的事务,即如果提交到数据库A和B,并且A提交成功,则B上的失败意味着回滚A和B而不是B。
当我们看到article
时,我们遇到了一个问题从我的理解,这基本上意味着永远在线可用性组模式不支持MSDTC。 我在SQL Server 2012中找不到替代品
所以我的问题是:
提前致谢,非常感谢您的帮助。 DOR
答案 0 :(得分:2)
我最近在https://dba.stackexchange.com/questions/47108/alwayson-ag-dtc-with-failover
上提出了类似的问题>我们有什么选择(搁置或开源产品/代码更改)?
我认为你有两个选择:
在我的情况下,我们使用商业应用程序,因此选项1不可行。我们目前正在使用数据库镜像,根据最近的研究,我现在明白,这也是不受支持的。
我带走的是它可以使它工作。但这并不简单,它会让你陷入无法支持的境地 - 这对我们来说是不可接受的。因此,我计划考虑利用日志传送和更改从热备用(带镜像)或热备用(带日志传送)。
在此设置中运行MSDTC的具体影响是什么(完全崩溃/丢失事务)?
如果您决定将DTC与可用性组或镜像一起使用,则可能会在故障转移方案中出现数据损坏/不一致的风险。你引用的文章给出了一个很好的例子。
不可否认,对于Log Shipping,可能会出现同样的问题。我打算提出的论点是,通过日志传送,我们可以滚动到特定时间点,我们可以确保只移动到我们知道一切都是一致的时间点。
我们使用的商业应用不支持高可用性。这是我们努力使其高度可用。