我写个一个触发器,要求当A服务器插数据的同时也向B服务器插数据。
写完后,测试A、B是同一台服务器时,没有问题。
但A、B不是同一台服务器时就报错了:
查询分析器提示‘服务器(本机)  上的 MSDTC 不可用。’
于是我启动本机的‘Distributed Transaction Coordinator, DTC’
再试,查询分析器提示‘服务器 (外部) 上的 MSDTC 不可用。’
我又启动了外部服务器的‘Distributed Transaction Coordinator, DTC’
再试,查询分析器提示‘该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。’
我想请问一下,我只是简单的向外部服务器插一条数据,有这么麻烦吗?
请高手指点一下。

解决方案 »

  1.   

    在触发器中加试试
    SET XACT_ABORT ON
    ...
    SET XACT_ABORT OFF
      

  2.   

    自己不会 搜来的,希望对你有帮助 
    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
      

  3.   

    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
      

  4.   

    为了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
      

  5.   

    5、用友服务器DTC服务登录帐户一定要设置为NT Authority\NetworkService;
    是什么意思,能否说详细点。我没NT Authority\NetworkService;这个账户。