sql server连接Oracle方法

来源:互联网 发布:mysql数据库删除语句 编辑:程序博客网 时间:2024/05/07 00:59

(一)在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修改注册表,依照上图方法修改,注册表有两处需要更改或者增加,修改完成后重启电脑,以上问题解决。

如果要在其他电脑设定,可以将注册表这两个分支导出,然后在另外的电脑直接汇入,省去了设置的麻烦。