A机器上执行,创建临时表
CREATE TABLE  #sales (

) ON [PRIMARY]declare @SqlStr as varchar(8000)
SET @SqlStr = 'SELECT V_S.*    FROM  B机器上的表  V_S
WHERE V_S.SAL_DT BETWEEN   ''2010/04/10''  AND  ''2010/04/11'''INSERT  INTO  #sales   (不加这段,可以抽出数据,加上就报错)
EXEC (@SqlStr)----------------------------------------------------------------------------
サーバー : メッセージ 7391、レベル 16、状態 1、行 1
OLE DB プロバイダ  'SQLOLEDB' は分散トランザクションを開始できなかったので、要求した操作は実行されませんでした。
[OLE/DB provider returned message: 指定されたトランザクション コーディネータに、新規トランザクションを参加できませんでした。]
OLE DB エラー トレース [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
------------------------------------------------------------------------
意思就是: 分散式事务,我晕,压根就没有用事务吗这是什么原因?

解决方案 »

  1.   

    不太明白
    -try
    CREATE TABLE ##sales 关键看见日文就火。
      

  2.   

    我不往临时表中放数据,只是exec抽出数据的时候是没问题的。一往临时表中放数据就报错
      

  3.   

    http://blog.csdn.net/playwarcraft/archive/2009/03/13/3986908.aspx
    看看有没有帮助
      

  4.   

    EXEC (@SqlStr)换成select 语句 就可以放入。我这个处理不需要事务处理的
      

  5.   

    SELECT V_S.* FROM B机器上的表
    是不是B机器的表没法link啊
      

  6.   

    playwarcraft说的有道理。
    在A和B上分别查询看看结果如何:
    select server_id,name,data_source,product from sys.servers如果是SQL2005及以上版本,参考:
    http://blog.csdn.net/claro/archive/2009/07/03/4317900.aspx
      

  7.   

    Sharon_liu
     
    (三天不结帖的木有小JJ) ,那要是女的呢