前言:一般sqlserver通过链接oracle数据库都是通过安装oracle的客户端实现。现介绍一种相对精简的方法,只需要简单的几步操作即可实现sqlserver通过oledb驱动链接oracle数据库。
安装Oracle数据访问组件ODAC
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序
1、odac下载地址
2、ODAC包解压缩
在Sql Server服务器上创建一个目录,将工具压缩包解压到该目录下;然后打开目录;
目录下一共有8个文件夹,分别是:
instantclient_11_2:这是Oracle客户端,所有组件的运行都依赖于这个客户端;基础包
oledb:这是OLE DB组件
asp.net:这是ASP.NET2组件
asp.net4:这是ASP.NET4组件
odp.net4:这是.NET4组件
odp.net20:这是.NET2组件
oramts:这是Oracle的MTS服务
network:这个文件夹不用管,它是用来存放tnsnames.ora文件的,要安装后才能用。
3. ODAC包安装
使用"管理员"打开CMD,并进入到ODAC包的解压目录下,执行命令:install.bat all D:\ERP_Oracle Oracle true
下面是对执行命令的参数介绍:
第一个参数:all。all代表安装解压目录下文件夹下所有的组件和客户端。如果你不需要这么多组件,只用到其中一个,比如只用到了OLE DB组件,就可以像下面这样只安装客户端和这一个OLE DB组件:install.bat oledb D:\ERP_Oracle Oracle;
第二个参数:D:\ERP_Oracle。这是安装路径,根据自己的实际情况指定,路径中尽量不要有空格、圆括号、汉字;
第三个参数:Oracle。这个叫ORACLE HOME NAME,这个参数可以自定义一个字符串,不一定非得是"Oracle"。这个参数是用来写入注册表的。比如,上面这条语句执行后,会在注册表的以下位置写入(HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_Oracle),这"KEY_“后面的Oracle就是你在参数中传入的那个"Oracle”;
第四个参数: true。一般只用前三个参数就够了,在安装组件的时候会自动把它依赖的组件都安装上,但如果你只想安装指定的组件,不想装它所依赖的组件,这时才会用到第四个参数。比如:当你安装asp.net时,如果只用前三个参数,会自动把它所依赖的odp.net20和instantclient_11_2也安装上,但如果你再传入第四个参数"false",如下:install.bat asp.net D:\ERP_Oracle Oracle false 这时就只会安装asp.net,而不会把odp.net20和instantclient_11_2也装上。
4. 设置环境变量
添加环境变量:ORACLE_HOME=D:\OracleClient
将环境变量添加到Path中PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin
5. 配置tnsnames.ora文件
如果要用组件访问Oracle数据库,那么就要根据需要配置tnsnames.ora文件,并存放于D:\ERP_Oracle\network\admin目录下
在D:\ERP_Oracle\network\admin\sample目录下复制tnsnames.ora文件到D:\ERP_Oracle\network\admin
打开tnsnames.ora文件并修改,请参考下面:
6. 注意事项
用cmd进入到ODAC的安装路径下,然后运行该路径下的uninstall.bat批处理文件:uninstall.bat all D:\ERP_Oracle
install.bat和uninstall.bat两个批处理文件会在安装目录下分别产生install.log和uninstall.log两个日志文件
7. 遇到的问题
第一个问题
产生原因:按照1-6步完成,重启服务器后,服务(OracleOracleMTSRecoveryService)没有启动成功,原因是执行D:\ERP_Oracle\bin\omtsreco.exe报错
解决方法:查询安装程序中是否安装了Microsoft Visual C++ 2015 Redistributable(x64);不限于2015版本
第二个问题
产生原因:多次打开Sql Server的链接服务器不会出现“Oracle Provider for OLE DB”
解决办法:重新安装ODAC工具包
Sql Server 远程连接Oracle
1. 图形界面创建Oracle链接服务器
1.1 打开SSMS以sa身份登录,在左侧的“对象资源管理器”窗口中展开“服务器对象”节点,在其下的“链接服务器”节点上右键选择“新建链接服务器…”,如图:
1.2 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:
链接服务器:链接服务器的别名
其他数据源(服务器类型):选择“其他数据源”
提供程序:(64位系统)选择Oracle Provider for OLE DB
产品名称:一定是“Oracle”,这是固定写法,只要是链接Oracle数据库都得这么写
数据源:需要链接的Oracle数据库名称
访问接口字符串:可以不填写,也可以填写:MSDASQL
1.3 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:在“安全性”栏的右边选择最下面的“使用此安全上下文建立连接”,然后在下面输入连接到ora(根据自己的实际情况来更改)数据库的用户名和密码。
1.4 将服务器选项中的RPC、RPC Out 置为True
1.5 待上述步骤全部完成后,点击确定按钮,如果正常的话,就可以成功链接服务器到Oracle数据库了。
2. 命令创建Oracle的链接服务器
下面两条命令语句补全,然后在SQL Server中执行即可创建成功:
-- 创建链接服务器
EXEC master.dbo.sp_addlinkedserver @server = N'别名', @srvproduct=N'库名',@provider=N'MSDAORA', @datasrc=N'TNS名'
-- 链接数据库及登录
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'别名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'模式名', @rmtpassword = N'密码'
3. 遇到的问题:
第一个问题:在创建链接服务器,填写完最后确定时,报“无法创建链接服务器 “ORA” 的 OLE DB 访问接口 “OraOLEDB.Oracle” 的实例”错误
解决方法:在SSMS->链接服务器->访问接口->OraOLEDB.Oracle的地方右击“属性”出现下面的框,选中“允许进程内”
第二个问题:在创建链接服务器,填写完最后确定时,报“ORA-12154: TNS:could not resolve the connect identifier specified”错误
解决方法:重新检查tnsnames.ora文件中的配置是否正确。
评论区