2

我在我的 C# 控制台应用程序项目中使用两个 SQL Server 连接对象。我需要在单个事务中执行此操作所以我使用了 Transactionscope(分布式事务)

我无法在事务范围内使用连接它显示错误

服务器上的 MSDTC 不可用。

我该如何解决....一个sql连接是远程服务器,另一个是本地服务器。

注意:- msdtc 服务已经启动。

服务器在两台机器上启动。我仍然面临这个问题。我是否需要关闭本地 Intranet 机器中的防火墙。

4

5 回答 5

2

启动 MSDTC 服务。

在命令提示符下:

net start msdtc

或来自服务 MMC。找到“分布式事务协调器”并单击开始。

于 2009-06-03T12:11:45.360 回答
2

如果您很难让 DTC 正常运行(尤其是在涉及防火墙或 SQL 集群的情况下),那么DTCPing是一个很好的工具(由 Microsoft 提供)来识别它。请注意,(IIRC)您需要能够在两个方向上进行 DTCPing

于 2009-06-03T12:17:42.137 回答
2

每当您执行分布式事务时,Microsoft 分布式事务协调器都需要在您的本地计算机和参与事务的所有服务器上运行。如果你有防火墙,你还需要确保你限制了 MSDTC 通信的端口,并在你的防火墙配置中添加了适当的规则以允许连接——我相信它需要端口映射器访问以及特定端口您为 RPC 选择的范围。MSDTC 还有各种需要同步的安全设置来控制服务器之间的身份验证方式。

以下是一些可能有用的链接:

  1. MSDN 上的 MSDTC
  2. MSDTC 故障排除
  3. MSDTC 和防火墙问题
于 2009-06-03T12:18:13.587 回答
1

我最近在一个项目中遇到了同样的问题。不幸的是,我无权按照其他答案中的说明启动 MSDTC。如果您处于同样的情况,我建议您阅读我不久前发布的关于此问题的问题。

MSDTC 问题

于 2009-06-03T12:19:12.443 回答
0

只是一个想法,你可能已经尝试过了。如果您确认 MSDTC 服务正在运行,您是否查看过运行服务的机器上的事件日志?您可能会从那里的服务中找到错误信息。

于 2009-06-03T17:07:12.213 回答