我需要编写一个流程,需要更新位于地理位置分离的服务器上2个不同数据库中的2个相同的表。
出于某些安全考虑,我们无法将其中一个服务器添加为链接服务器。
还要求如果任一进程失败,则应回滚两个事务。这是全有或全无。在MSDN关于TransactionScope
的{{3}}之后,好像这个课程将为您处理业务,但文档中有一些模糊的区域,我希望有经验的人能够使用这种方法为我澄清:
答案 0 :(得分:2)
不应链接服务器。它们甚至可以完全不同(我们对MS SQL和IBM Websphere MQ之间的分布式事务使用TransactionScope
)。实际上它使用MSDTC服务作为two phase commit transactions的事务协调员。
虽然听起来非常强大和有前途,但让它起作用可能会很棘手。您需要在所有参与的服务器上启动并运行MSTDC服务,其端口应在防火墙中打开,并且应正确配置多个安全选项。
以下link可能会有所帮助