SQLserver通过链接服务器连接oracle

在SQLserver中一直使用的是DTS抽取数据,但是DTS微软只支持到2008,到了2012后就没有这个工具了,现在需要在SQLserver跟Oracle中间建立一个通道,借助这个通道,将Oracle中的数据抽取到SQLserver数据库中。

环境介绍:win2012  64位服务器、SQLserver2012数据库、本地数据库Oracle 11g-64bit

注意:在这里特别声明一点,或许有的人认为oracle根本就不区分位数,只要是数据库就行,是不行的,如果你的机子是64位的,你必须装64位的oracle.

本来是考虑到在服务器上装database太浪费资源了,但是在装客户端的时候遇到如下问题:

  Could not find the main class. Program will exit.

      这个问题我也没有深究,网上说是因为装在中文目录下的原因,其实不然,我的是在英文目录下,那就是版本问题。

     下面是我的一个具体创建链接的详细步骤:

     1.配置ODBC

     先到C:\app\product\11.2.0\dbhome_1\NETWORK\ADMIN\,找到tnsnames.ora

     配置上连接远程oracle的服务名。

   

   打开ODBC64

   

  安装了64位的oracle数据库之后的ODBC64

然后到用户DNS下,点击添加,找到刚才的驱动,即可出现如下界面:

点击测试连接后,会让你输入登录oracle数据库的用户名跟密码,输入完成点ok

直到出现如下界面,说明已经成功一半了。

2.新建链接服务

图中红色部分特别注意,IP加上实例名。或许有人觉得为什么不直接用ODBC中刚配置好的那个160作为数据源,我刚开始也觉得应该可以这样,但是实践了,报错了。我直接用实例加IP是成功的。

输入用户名跟密码

也可以使用脚本建立服务链接:

USE [master]
GO

/****** Object:  LinkedServer [TEST]    Script Date: 2015/12/2 11:18:01 ******/
EXEC master.dbo.sp_addlinkedserver @server = N‘TEST11‘, @srvproduct=N‘oracle‘, @provider=N‘OraOLEDB.Oracle‘, @datasrc=N‘192.168.1.160/oracle‘
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N‘TEST11‘,@useself=N‘False‘,@locallogin=NULL,@rmtuser=N‘***‘,@rmtpassword=‘***‘

GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘collation compatible‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘data access‘, @optvalue=N‘true‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘dist‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘pub‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘rpc‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘rpc out‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘sub‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘connect timeout‘, @optvalue=N‘0‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘collation name‘, @optvalue=null
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘lazy schema validation‘, @optvalue=N‘false‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘query timeout‘, @optvalue=N‘0‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘use remote collation‘, @optvalue=N‘true‘
GO

EXEC master.dbo.sp_serveroption @server=N‘TEST11‘, @optname=N‘remote proc transaction promotion‘, @optvalue=N‘true‘
GO

上述工作做完之后可以用如下语句测试是否连通

select * from openquery(TEST11,‘select SYSDATE from DUAL‘);

如果有结果就说明成功了。

时间: 2024-12-23 18:30:15

SQLserver通过链接服务器连接oracle的相关文章

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlserver 链接oracle可以通过两个访问接口: “MSDAORA” 和“OraOLEDB.Oracle” 1.“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的,这里建议不使用此接口进行链接.通过该访问接口建立的链接服务器在进行查询orac

【转】Sqlserver通过链接服务器访问Oracle的那些事儿!

原文:http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 前言:1.不经历风雨,怎能见彩虹.2.充分利用BaiDu.google等搜索引擎查找资料并整合分析!3.世上无难事只怕有心人! 本文由来:笔者在研究SQLSERVER链接服务器到oracle并使用分布式事务时,出现各种各样的‘故障.异常’后,通过‘百度.google’等大量搜索引擎寻找解决问题无果,同时发现网上有大量的‘战友’牺牲在这道坎上,故发此文罗列出链接服务器出现的各种问题(本人

mssql通过链接服务器连接oracle

=============================================== 2020/1/17_第1次修改                       ccb_warlock =============================================== 最近2个月在写mssql的存储过程,业务需求需要向第三方oracle写回数据,所以需要解决如何通过mssql连接oracle并写回数据. 一.安装Oracle数据访问组件ODAC 通过SSMS查看,如果Ora

sqlserver创建链接服务器连接sqlserver脚本

示例: EXEC sp_addlinkedserver @server='MyLinkServer', --链接服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc='10.10.2.17', --要访问的的数据库所在的服务器的ip @catalog= 'HISDB' --访问的数据库名 GO EXEC sp_addlinkedsrvlogin 'MyLinkServer', --链接服务器别名 'false', NULL, 'sa', --要

SQLServer通过链接服务器远程删除数据性能问题解决

原文:SQLServer通过链接服务器远程删除数据性能问题解决 在上一遍文章中介绍了SQLServer通过链接服务器访问Oracle性能问题的解决方法,本文介绍链接服务器下远程删除SQLServer数据的性能问题解决 1. 问题发现 系统中有个功能,需要远程删除SQLServer实例的表数据,删除语句中有where条件,条件中有一个子查询. 该功能前台执行速度非常慢.所以准备调优. 下面为演示代码,未优化前如下: DELETE FROM [LINKSERVERNAME].[AdventureWo

SQL Server 通过链接服务器访问Oracle

数据库:SqlServer2005 .Oracle 11gR2 系统环境:windows Server 2008R2 32位. 最近在做项目时,需要通过sql的链接服务器访问Oracle.以前弄过sql访问sql,感觉挺简单的,以为访问Oracle也差不多,实际做过后才发现存在很多差距. 步骤: 1.SQL Server端Windows需装对应版本的Oracle客户端.(我安装Oracle9i客户端后通过PL/SQL访问Oracle11gR2,没有问题,但是通过链接服务器访问就无法查询) 2.O

SQLServer创建链接服务器

--SQLServer创建链接服务器----1.访问接口中Oracle接口 属性 选择 允许进程内-- --删除链接服务器EXEC master.dbo.sp_dropserver @server=N'ORCL_SERVER', @droplogins='droplogins'--添加链接服务器EXEC master.dbo.sp_addlinkedserver @server = N'ORCL_SERVER', @srvproduct=N'oracle', @provider=N'OraOLE

SqlServer Link 链接服务器的使用

1 --创建linked 2 exec sp_addlinkedserver 'a','','SQLNCLI','your ipaddress' 3 4 --登陆linked 5 exec sp_addlinkedsrvlogin 'a','false',null,'sa',123456' 6 7 8 --删除linked 9 exec sp_dropserver 'a','droplogins' 10 SqlServer Link 链接服务器的使用,布布扣,bubuko.com

64位sql server 如何使用链接服务器连接Access

原文:64位sql server 如何使用链接服务器连接Access 测试环境 操作系统版本:Windows Server 2008 r2 64位 数据库版本:Sql Server 2005 64位 网上的许多教程都介绍了如何使用链接服务器连接Access,但这些教程都是基于32位的sql server而言的. 参见经典教程:<SQL Server2005连接Excel.Access> 教程中提到了“访问接口”要选择“Microsoft.Jet.OLEDB.4.0”.但是由于windows s