我已经在两台服务器之间正确配置了 SQL Server 中的事务复制。我有一个配置了本地分发的发布服务器和一个具有可更新订阅的事务发布。第二台服务器订阅了该发布,并配置为同时将更改提交回发布服务器。
当订阅服务器宕机时,发布服务器可以无错误地进行更改。当订阅服务器重新上线时,更改将按预期从发布服务器传播到订阅服务器。
但是,当发布服务器关闭时,在订阅服务器上进行的更改尝试将不会提交。当我尝试在发布服务器关闭或 MSDTC 服务停止时提交时,我收到一条错误消息,指出发布服务器上的 MSDTC 不可用。当我尝试在发布服务器的 SQL Server DB 引擎停止时提交时,我收到一条错误消息,指出登录发布服务器上的 SQL Server 失败。
这是预期的行为吗?也就是说,我的配置是否会阻止订阅服务器在发布者离线时提交事务?
任何帮助都将不胜感激。谢谢!
答案1
对于在订阅服务器上进行的每个更改,MSDTC 都会管理发布服务器和提交更改的订阅服务器之间的两阶段提交操作。
因此,很明显,当使用立即更新时,订阅者和发布者必须同时在线才能将任何更改应用于订阅者。它也被非常明确地调用这里:
- 立即更新。发布者和订阅者必须连接在订阅服务器上更新数据。
如果您希望在发布服务器离线时订阅服务器可以进行更新,则需要查看排队更新。