http://expert.csdn.net/Expert/topic/2214/2214525.xml?temp=.5876276我需要操作多个数据库,但是在一个事务中,他们的更改是关联的
我试了嵌套事务(同时开始两个事务),系统提示出错
我已经把我知道的高手都问遍了,竟然没有一个会,天。

解决方案 »

  1.   

    是用Sql Server数据库吗?如果是,先链接服务器sp_linkedservers(参照帮助的格式),然后再写事务应该没问题。
    别忘记了格式:
    服务器..数据库什么的,大概就这样,我以前试过,可以。
      

  2.   

    别迷信数据库的事务处理,自己多写一些代码可以解决相同的问题。全国证券交易的数据处理都是交换 dbf 文件实现的。
      

  3.   

    应该是分布式事务: Dis Tran ,你可以查一下的,
      

  4.   

    你加一个事务就可以了
    BEGIN TRAN
    --生成WS中业务员汇总销售
    SELECT CREATE_BY,
           SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) AS SIAMOUNT,
           SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST,
           (SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE/(1+TAX_RATE)) -SUM(QTY*CAST(AVG_COST AS MONEY)))  AS SINP
    FROM SI AS H ,SI_DETAIL AS D
    WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE
    GROUP BY CREATE_BY--生成WSCH中业务员汇总销售
    SELECT CREATE_BY,
           SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) AS SIAMOUNT,
           SUM(QTY*CAST(AVG_COST AS MONEY)) AS SICOST,
           (SUM(QTY*CAST(PRICE AS MONEY)*CUR_RATE) -SUM(QTY*CAST(AVG_COST AS MONEY)))  AS SINP
    FROM WSCH.DBO.SI AS H ,WSCH.DBO.SI_DETAIL AS D
    WHERE H.SI_NO=D.SI_NO AND DATE_CREATE BETWEEN @BEGINDATE AND @ENDDATE
    GROUP BY CREATE_BY
    COMMIT TRANSACTION
      

  5.   

    BEGIN TRAN
    ……
    COMMIT TRANSACTION
    ……rallback
      

  6.   

    1、看过以前别人回你的贴,你理解有误。注意下面的ConnA与ConnB是两个联接,如果是同一个联接,那肯定报你说的错。
    connA.begintrans    '开始事务A
    connB.begintrans    '开始事务B
        connA.execute " ..."
        connB.execute " ..."
    connA.committrans    '提交事务A
    connB.committrans    '提交事务B
    这是第一种方法
    2、如果是在同一个服务器上多个数据库情况:
    ConnA.BeginTrans
      ConnA.Execute ...
      ConnA.Execute ...
      '切换数据库进行操作
      ConnA.DefaultDataBase=你要去的数据库
      ConnA.Execute ...
      ConnA.Execute ...
      '切换回原来的数据库
      ConnA.DefaultDataBase=原来的数据库
    ConnA.CommitTrans
    3、不同服务器上的数据库
      A:用分布式事务 
      B:用Sp_AddLinkServer用添加入本服务器,把它看做同一个服务器上的数据库就OK