Distributed Transaction Coodinator服务是否起来了?大力还有一个类似的千分问题呢

解决方案 »

  1.   

    可以的。
    1。先把相关的服务器注册到linked server中。
    2.
    set xact_abort on
    begin distributed tran
    --你的处理代码
    --select * from servername.pubs.dbo.employee
    commit tran这样就可以了,如果还不行,就要到服务中把DTC启动起来.
      

  2.   

    set  XACT_ABORT on
    set ANSI_NULL_DFLT_ON on
    set ANSI_WARNINGS on BEGIN DISTRIBUTED TRANSACTION
    select *  from OPENDATASOURCE('MSDASQL','DRIVER={SQL Server};SERVER=ip;UID=sa;PWD=密码;').pubs.dbo.jobs
    commit tran
      

  3.   

    --启动DTC(分布式事务处理协调器)  
    exec  master..xp_cmdshell  'net  start  msdtc',no_output 
      

  4.   

    大力的启动DTC方法只适用于win2000/xp/2003的电脑,如果是win98,要手工启动.而且需要执行SQL语句的电脑和连接的电脑都要启动.
      

  5.   

    --补充大力的.
    set  XACT_ABORT on
    set ANSI_NULL_DFLT_ON on
    set ANSI_WARNINGS on --启动远程服务器的MSDTC服务
    exec master..xp_cmdshell 'isql /S"远程服务器名" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc''"'--启动本机的MSDTC服务
    exec master..xp_cmdshell 'net start msdtc'--进行分布事务处理
    BEGIN DISTRIBUTED TRANSACTION
    select *  from openrowset('sqloledb','远程服务器名';'sa';'',pubs.dbo.jobs)
    commit tran