我写个一个触发器,要求当A服务器插数据的同时也向B服务器插数据。
写完后,测试A、B是同一台服务器时,没有问题。
但A、B不是同一台服务器时就报错了:
查询分析器提示‘服务器(本机) 上的 MSDTC 不可用。’
于是我启动本机的‘Distributed Transaction Coordinator, DTC’
再试,查询分析器提示‘服务器 (外部) 上的 MSDTC 不可用。’
我又启动了外部服务器的‘Distributed Transaction Coordinator, DTC’
再试,查询分析器提示‘该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB ' 无法启动分布式事务。’
我想请问一下,我只是简单的向外部服务器插一条数据,有这么麻烦吗?
请高手指点一下。
------解决方案--------------------
自己不会 搜来的,希望对你有帮助
1.启动2台sql server服务器的MSDTC服务,做cluster的话,必须为每个节点运行comclust.exe
2.2台sqlserver都要设置好对方的linkserver,
3.如果2台sql server服务器不属于同一个网段,则需要双方配置host,保证ping机器名可以ping通对方
4.可以使用DTCping工具测试一下
5.这样,就sql server可以进行分部式查询和事务操作了。
另附一网址http://www.cnxuexi.com/computer/chengxusheji/shujuku/4373.html
------解决方案--------------------
DTC配置,现在我一直在用:
为了PDM系统在零件生效时,同时写入用友数据库,程序设计时需要启动分布式事务。现将配置说明如下:
1、PDM服务器使用Windows 2000 Server操作系统,必须安装SP4;
2、PDM服务器及用友服务器,必须安装SQL Server 2000 SP4;
3、两台服务器都要在SQL server查询分析器中运行:
set XACT_ABORT on
4、两台服务器的DTC服务必须启动;
5、用友服务器DTC服务登录帐户一定要设置为NT Authority\NetworkService;
6、两台机器的135端口都要开放;
5、两台服务器都要在组件服务中设置MSDTC