如题, 也就是说. 现在我在一个事件里要同时插入不同数据库(可能是二个服务器)的二个表,那我要用事务来达到同时插入,或异常时都不写. 但因为是不同数据库, 那连接字符串都是不同的, 那有什么办法达到这样一个要求啊.

解决方案 »

  1.   

    使用com+的事物支持,就是.net里的企业服务那个命名空间下的
      

  2.   

    有三种办法可能可行:
    A:Com+,找MSDN
    B:用二个事务,等都完成后才提交
    C:适用于同服务器的二个库,在第一个库里做第二个库的某表的视图,然后操作视图
      

  3.   

    也可以用com+啊
    using System.EnterpriseServices;
      

  4.   

    to 怎么判断二个事务都完成了. 请教.你要分清楚,command地执行和事务的提交这是两个不同的概念。
      

  5.   

    还是不太清楚.  我写个例子,比如说. 我二个插入操作写成存储过程
    create procedure sp_a
    as
    begin transaction
    insert into table_a values(1,2)
    commit transactioncreate procedure sp_b
    as
    begin transaction
    insert into table_b values(1,2)
    commit transaction那要在事件里执行这二个SP,如何判断都完成了,再去提交.或异常后回滚
      

  6.   

    to 那要在事件里执行这二个SP,如何判断都完成了,再去提交.或异常后回滚你不应该用数据库服务器所提供的transaction,而应该用Ado.net提供的transaction类,这样就可以在程序端进行控制
      

  7.   

    我也是在程序端控制的, 但程序端的事务, 好像是针对连接的, 如CONN.BEGINTRANSACTION()不同的连接怎么用呢. 
      

  8.   

    to 我也是在程序端控制的, 但程序端的事务, 好像是针对连接的, 如CONN.BEGINTRANSACTION()transaction由连接产生,然后加载到dbcommand上(参看dbcommand.transaction属性)。to 不同的连接怎么用呢.对于不同连接,要分别产生transaction。
      

  9.   

    TO 对于不同连接,要分别产生transaction。那我上述二个SP分别是用二个连接, 那就是要在程序里产生二个事务. 那怎么才能同时提交呢,
    如果是要判断二个事务都完成了,再提交, 那怎么判断呢.  请指教一下.
      

  10.   

    如果是同一服务器多数据库事务不用特别的处理,不同服务器建议用com=
      

  11.   

    to 那我上述二个SP分别是用二个连接, 那就是要在程序里产生二个事务. 那怎么才能同时提交呢,
    如果是要判断二个事务都完成了,再提交, 那怎么判断呢. 请指教一下.操作数据库关键的步骤在于command地执行,如果command执行没有异常就可以提交,否则回滚。而对于事务提交来说,除异常的机会很小,而对于在程序端进行提交两个不同事务必然一前一后操作,这个点出了问题,没法完全保障。