例如:
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]。
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]。
“若要在 SQL Server 2000 和 Oracle 之间执行分布式事务,必须使用 Oracle 8.0.4.1 版本或更新版本。有关更多信息,请参见分布式事务。”会不会版本太低?
MS提供的数据源对分布式事务很怪。如果用ODBC可以的话,就说明设置正确。
就是数据源问题,考虑升级。其它的就不能帮你提供有价值的东西了。