我在A服务器向B服务器止传数据时,我加上了事务,比如:
declare @ErrorMessage varchar(8000),@ErrorSeverity int, @ErrorState int,@ErrorNumber int,@OperType int 
     set xact_abort on
     BEGIN TRANSACTION database_upload 
           begin try      insert into openquery(linkremote, 'select code,billcode from b.dbo.t_wh_billofdocument_bk') 
     select code,billcode from t_wh_billofdocument_bk
  end try
    begin catch
       SELECT  @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), 
               @ErrorState = ERROR_STATE(),@ErrorNumber=ERROR_NUMBER()
       if @ErrorSeverity>18 or @ErrorSeverity<0
         set @ErrorSeverity=16
       if @ErrorState>127 or @ErrorState<1
         set @ErrorState=1 
       begin try
         ROLLBACK TRANSACTION database_upload 
       end try
       begin catch
       end catch
       raiserror (@ErrorMessage, @ErrorSeverity,@ErrorState)  
       --return @ErrorNumber
    end catch
    begin try
      COMMIT TRANSACTION database_upload 
    end try
    begin catch
    end catch 只要我每开服务器A和B时,我在A向B传数据,就是我上面写的语句,都会提示A服务器的MSDTC不可用,和B服务器的MSDTC不可用,其实A服务器和B服务器的MSDTC确实已经启用了,而且在“控制面板”“管理工具”“组件服务”,打开“组件服务”窗口,“组件服务”“计算机”“我的电脑”,右键“属性”“MSDTC”,勾选“使用本地协调器”,单击“安全性配置”,弹出“安全配置”窗口,勾选“网络DTC访问”、“允许远程客户端”、“允许远程管理”、“允许入站”、“允许出站”、“不要求进行验证”、“启用事务Inernet协议(TIP)事务”和“启用XA事务”(“允许入站”和“允许出站”据具体情况设置,客户端机器必须“允许出站”,服务器端机器必须“允许入站”),DTC登陆账号必须是“NT AUTHORITYNetworkService”,这些设置我都做了。还是提示MSDTC不可用,后来,我用手动重新启动了一下A服务器和B服务器的MSDTC,然后在A服务器执行上面的代码,这样也可以通过的。
我想问一下,有没有其它的设置让它不要老是提示MSDTC不可用,或者我在A服务器用sql语句来停止和启动A服务器的MSDTC,和在A服务器通过sql语句来停止和启动B服务器的MSDTC