现在想实现跨数据库的事务:
比如:在本地(Oracle)插入一条用户信息,同时远程SQLSERVER数据库中删除一条数据(主键相同),保证两个操作在一个事务中完成.说明一点:本地的数据库和远程的数据库的库结构是完全一样的.大家谁有这方面的经验,多多指导!!!

解决方案 »

  1.   

    1、建立db_link;
    2、建议用存储过程来实现插入操作(存储过程中用事务);
    3、前台程序再调用存储过程。
      

  2.   

    在所有需要用到事务的地方都显式定义being tran 然后显示commit/rollback,或者使用xact_abort选项来保证事务的逻辑一致性
      

  3.   

    MSSQL服务器这边,MSDTC服务需启动.
      

  4.   

    如何数据库都是Oracle的,用户不一样,该如何实现,谢谢
      

  5.   

    类似这样的代码,就可以实现分布式是事务:分布式事务
    Oracle 有很多很好的特性,其中之一就是能够透明地处理分布式事务。在一个事务的范围内,可以
    更新多个不同数据库中的数据。提交时,要么提交所有实例中的更新,要么一个都不提交(它们都会回滚)。
    为此,我不需要另外编写任何代码:只是“提交“就行了。
    Oracle 中分布式事务的关键是数据库链接(database link)。--建立database link
    CREATE  PUBLIC DATABASE LINK hisdb
    CONNECT TO easyrep IDENTIFIED BY easyrep
    USING 'repdb';--插入远程数据库表记录
    insert into table  sss@hisdb values( ... );--删除本地数据库表记录
    delete from sss where id= ... ;
      

  6.   

    建立远程链接服务器,并且保证两个语句在同一个事务中完成:exec sp_addlinkedserver '链接名称',' ','SQLOLEDB','192.168.xx.xxx'
    exec sp_addlinkedsrvlogin '链接名称','false',NULL,'sa','xxxxxxx'
    ....
    建立存储过程执行 :SET XACT_ABORT ON 
    begin tran
    insert into table1().....delete 链接名称.数据库名.dbo.table1 where .....commit tran