侧边栏壁纸
博主头像
平凡之路博主等级

生活原本沉闷,但跑起来就会有风!

  • 累计撰写 82 篇文章
  • 累计创建 10 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

sqlserver通过odac链接oracle数据库

平凡之路
2024-05-14 / 0 评论 / 0 点赞 / 145 阅读 / 1,781 字

前言:一般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文件的,要安装后才能用。
image

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也装上。
image-1715658528825

4. 设置环境变量

添加环境变量:ORACLE_HOME=D:\OracleClient
将环境变量添加到Path中PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin
image-1715658555376

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文件并修改,请参考下面:
image-1715658582568

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报错
image-1715658651238
解决方法:查询安装程序中是否安装了Microsoft Visual C++ 2015 Redistributable(x64);不限于2015版本
image-1715658666384

第二个问题
产生原因:多次打开Sql Server的链接服务器不会出现“Oracle Provider for OLE DB”
解决办法:重新安装ODAC工具包

Sql Server 远程连接Oracle

1. 图形界面创建Oracle链接服务器

1.1 打开SSMS以sa身份登录,在左侧的“对象资源管理器”窗口中展开“服务器对象”节点,在其下的“链接服务器”节点上右键选择“新建链接服务器…”,如图:
image-1715658745267

1.2 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:

链接服务器:链接服务器的别名
其他数据源(服务器类型):选择“其他数据源”
提供程序:(64位系统)选择Oracle Provider for OLE DB
产品名称:一定是“Oracle”,这是固定写法,只要是链接Oracle数据库都得这么写
数据源:需要链接的Oracle数据库名称
访问接口字符串:可以不填写,也可以填写:MSDASQL
image-1715658761248

1.3 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:在“安全性”栏的右边选择最下面的“使用此安全上下文建立连接”,然后在下面输入连接到ora(根据自己的实际情况来更改)数据库的用户名和密码。
image-1715658775102

1.4 将服务器选项中的RPC、RPC Out 置为True
image-1715658806948

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” 的实例”错误
image-1715658869058
解决方法:在SSMS->链接服务器->访问接口->OraOLEDB.Oracle的地方右击“属性”出现下面的框,选中“允许进程内”
image-1715658881436

第二个问题:在创建链接服务器,填写完最后确定时,报“ORA-12154: TNS:could not resolve the connect identifier specified”错误

解决方法:重新检查tnsnames.ora文件中的配置是否正确。

0

评论区