sql server连接Oracle方法
(一)在SQL Server所在服务器中安装Oracle客户端程序,并设定好TNS
(二)在SQL Server中添加Link Server,设置方法如
下:
以上设置也可以透过执行sql server的存储过程实现。
sp_addlinkedserver & sp_addlinkedsrvlogin
(三)连接建立完成后,就可以执行查询语句了,查询的示例如下:
/*查询*/
select * from openquery(TESTORA, 'SELECT t01,t02 FROM tex_file')
/*插入数据*/
INSERT OPENQUERY(TESTORA, 'select t01 from tex_file')
select 'testabc'
/*更新数据*/
update OPENQUERY(TESTORA, 'select t01 from tex_file') set t01='hellowo'
where t01='testabc'
/*删除数据*/
delete from OPENQUERY(TESTORA, 'select t01 from tex_file')
where t01='hellowo'
(四)到此基本上无什么问题了,但是把这些语句放在sql server的触发器中的时候,问题产生了。
放入触发器中之后,一开始提示:“服务器 'XXXXX' 上的 MSDTC 不可用”,于是打开MSDTC服务(方法:切换到cmd窗口,运行net start msdtc,或者到控制台的服务里面启动DTC服务),不再提示这个错误,而是提示 “MSDTC不能启动分布式事务”。Oh my God,还是不行,于是再次去问谷歌,发现是因为微软提供的驱动不支持分布式事务,于是参照网上的方法(点此查看原始解决方案),修改注册表。
(五)修改注册表后,奇迹发生了。
修改的方法如下:
好了,运行regedit修改注册表,依照上图方法修改,注册表有两处需要更改或者增加,修改完成后重启电脑,以上问题解决。
如果要在其他电脑设定,可以将注册表这两个分支导出,然后在另外的电脑直接汇入,省去了设置的麻烦。
(测试环境:windows XP pro+sql server 2005+oracle9i)
因篇幅问题不能全部显示,请点此查看更多更全内容