例如:
  SET XACT_ABORT ON
  SET ANSI_WARNINGS ON
  SET ANSI_NULL_DFLT_ON on
BEGIN DISTRIBUTED TRANSACTION  --启动事务
  select * into #temptable from openquery(test,'select * from scott.emp')
  select * into A from #temptable
COMMIT TRANSACTION --提交事务
执行后,错误提示如下:
服务器: 消息 7391,级别 16,状态 1,行 5
该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]。

解决方案 »

  1.   

    建个ODBC数据源,链接服务器用ODBC来定义试试、书上说:
    “若要在 SQL Server 2000 和 Oracle 之间执行分布式事务,必须使用 Oracle 8.0.4.1 版本或更新版本。有关更多信息,请参见分布式事务。”会不会版本太低?
      

  2.   

    谢谢有人来帮忙!不会是版本的原因。联接服务器直接采用Oracle 数据库的SQL*Net别名方式,不经过ODBC,执行效率应该更快些吧
      

  3.   

    那你查一下MSDTC各项设置是否正确。
    MS提供的数据源对分布式事务很怪。如果用ODBC可以的话,就说明设置正确。
    就是数据源问题,考虑升级。其它的就不能帮你提供有价值的东西了。
      

  4.   

    JSS说的对啊,你建立一个ODBC数据源看看啊。我曾经遇到过类似的问题,不过那个时候我是要会滚数据。Oracle与sql server连接是好处问题的。是用ODBC数据源以后应该少了。但应该还有问题,不过我还没有遇到。呵呵~~~~~