【发布时间】:2016-01-17 20:33:19
【问题描述】:
我们将我们的数据库移动到一个单独的服务器上,它与 web、api、几个控制台应用程序和一个 Windows 服务(msmq、rhino)位于同一台服务器上
以上所有,除了服务可以连接数据库就好了。
但是服务(rhino 服务总线,消费消息)给出“与底层事务管理器的通信失败”。尝试建立数据库连接时出错。
我尝试过的事情 * 各种连接字符串(顺便说一句,使用服务器的 ip 地址,但就像我说的,这适用于其他应用程序) * 以网络服务、本地系统、管理员身份运行服务 * 在应用程序(旧服务器)和数据库(带有数据库的新服务器)上配置 MSDTC。对MSDTC一无所知,但如果在网上找到,请遵循“帮助”。 * 注释掉服务中的所有代码,只尝试打开连接(以防代码出现问题)
以上所有都导致完全相同的错误。
这里真的很绝望。晚上很晚,早上应该一切顺利.. :-(
【问题讨论】:
-
不管怎样,我可以毫无问题地从 sql management studio 连接到新服务器上的数据库。
-
我在连接到远程服务和使用 MSDTC 时看到了这个错误。我坚信问题出在 MSDTC 上。 MSDTC 是一种促进应用程序之间以及服务器之间的分布式事务的服务。我会坚持让您再次检查两台服务器中的 MSDTC 设置。 1) 两台服务器都必须在服务中启动 MSDTC。 2) 数据库服务器的 MSDTC 应该支持 MSDTC 属性中的远程连接。我将很快在答案部分中获得详细信息。同时,您能再检查一下吗?
-
让我把我的问题缩短一点。当您设置 DTC 时,您是否尝试在管理工具中设置本地 DTC 属性?
-
没错。 (仅供参考:“应用服务器”是 2008 年,“数据库服务器”是 2012 年)
-
Compnent Services => Computers => My Computer => Distributed Transaction Coordinator => Local DTC => Right Click, Properties => Security Tab Network DTC Access, Allow Remote Clients, Allow Remote Admin, Allow Inbound , 允许出站, 不需要 Auth, 启用 XA 事务, 启用 SNA ...事务登录帐户是 NetworkService
标签: c# sql-server-2012 windows-services remote-server