使用TransactionScope更新位于地理位置分离的服务器上的表(未链接)

时间:2012-03-01 22:28:05

标签: .net sql-server transactionscope

我需要编写一个流程,需要更新位于地理位置分离的服务器上2个不同数据库中的2个相同的表。

出于某些安全考虑,我们无法将其中一个服务器添加为链接服务器。

还要求如果任一进程失败,则应回滚两个事务。这是全有或全无。在MSDN关于TransactionScope的{​​{3}}之后,好像这个课程将为您处理业务,但文档中有一些模糊的区域,我希望有经验的人能够使用这种方法为我澄清:

  1. 文档说您可以连接到2个不同的数据库甚至是第三方RDBMS,但它没有指定数据库服务器是否必须“链接”
  2. 假设它们不需要链接,你能粗略地解释一下,TransactionScope如何处理异常并设法在发生错误时回滚?

1 个答案:

答案 0 :(得分:2)

不应链接服务器。它们甚至可以完全不同(我们对MS SQL和IBM Websphere MQ之间的分布式事务使用TransactionScope)。实际上它使用MSDTC服务作为two phase commit transactions的事务协调员。

虽然听起来非常强大和有前途,但让它起作用可能会很棘手。您需要在所有参与的服务器上启动并运行MSTDC服务,其端口应在防火墙中打开,并且应正确配置多个安全选项。

以下link可能会有所帮助