http://expert.csdn.net/Expert/topic/2399/2399878.xml?temp=.7085535

解决方案 »

  1.   

    启动分布式事务MSDTC--启动远程服务器的MSDTC服务
    exec master..xp_cmdshell 'isql /S"213.77.72.34" /U"test" /P"test" /q"exec master..xp_cmdshell ''net start msdtc''"'--启动本机的MSDTC服务
    exec master..xp_cmdshell 'net start msdtc'--然后再执行你的语句
    insert into OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=213.77.72.34;User ID=test;Password=test'
             ).hunan.dbo.Test(test)
    values(2)
      

  2.   

    改为:
    set  XACT_ABORT on
    set ANSI_NULL_DFLT_ON on
    set ANSI_WARNINGS on BEGIN DISTRIBUTED TRANSACTION
    insert into OPENDATASOURCE('MSDASQL','DRIVER={SQL Server};SERVER=213.77.72.34;UID=test;PWD=test;').hunan.dbo.Test(test)
    values(2)
    commit tran
    前提是两边都启动msdts服务
      

  3.   

    启动分布式事务MSDTC--启动远程服务器的MSDTC服务
    exec master..xp_cmdshell 'isql /S"213.77.72.34" /U"test" /P"test" /q"exec master..xp_cmdshell ''net start msdtc''"'--启动本机的MSDTC服务
    exec master..xp_cmdshell 'net start msdtc'是否每次都要执行?还是只执行一次??