我建了一个数据库链接,SID1是ORACLE 9i的一个实例,USER1是可以登陆SID1的一个用户,
然后我在SQL SERVER 2000中用
SELECT * FROM SID1..USER1.TABLE1
进行选择是没有问题的,但是我加了事务控制以后,如下
begin transaction
SELECT * FROM SID1..USER1.TABLE1
commit transaction
执行的时候就会报错,错误信息如下:服务器: 消息 7391,级别 16,状态 1,行 3
该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]。
这是怎么回事啊?哪位大虾来解答一下啊
然后我在SQL SERVER 2000中用
SELECT * FROM SID1..USER1.TABLE1
进行选择是没有问题的,但是我加了事务控制以后,如下
begin transaction
SELECT * FROM SID1..USER1.TABLE1
commit transaction
执行的时候就会报错,错误信息如下:服务器: 消息 7391,级别 16,状态 1,行 3
该操作未能执行,因为 OLE DB 提供程序 'MSDAORA' 无法启动分布式事务。
OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]。
这是怎么回事啊?哪位大虾来解答一下啊
begin distributed transaction
insert into wm_mis_tstkin
select * FROM WMS..ABC.WM_MIS_TABLE1
commit transaction
也不行
原来按照MSSQL的在线文档进行配置,在线文档中只列出的 Oracle8.1以下版本的解决方案,但是MSSQL服务器安装的是ORACLE9I的客户端,造成找不到相关文件。解决办法:
若要启用用于 Oracle 的 OLE DB 提供程序以与 Oracle 客户端软件一起使用,必须从命令
行运行注册表文件以修改客户端的注册表。不应同时运行客户端软件的多个实例。这些文件都列在下表
中并位于同一目录结构中,而该目录结构包含通常在 C:\Program Files\Common Files\System\OLE DB
中的 Microsoft 数据访问组件 (MDAC) 安装。
Oracle 客户端 Windows NT 或 9x Windows 2000 或以上
7.x mtxoci7x_winnt.reg mtxoci7x_win2k.reg
8.0 mtxoci80x_winnt.reg mtxoci80x_win2k.reg
8.1 mtxoci81x_winnt.reg mtxoci81x_win2k.reg
9i mtxoci9x_winnt.reg mtxoci9x_win2k.reg
如果 SQL SERVER 服务器安装的ORACLE客户端的版本对照以上表格,执行相应的.reg文件,执行之后需要重新启动 SQL SERVER 数据库
相关资料:http://support.microsoft.com/default.aspx?scid=kb;en-us;280106
http://blog.csdn.net/lovcal/archive/2005/12/13/550965.aspx 仅对 windows2003server