SQL Server 2008创建oracle链接服务器(心得)

操作系统是32位的情况下,曾经没费太多时间创建好了到oracle的链接服务器。主要要点就是:

1、安装oracle精简客户端。当时我用的是版本比较低的“oracle9i310-客户端简化版”,安装好了以后再配置对应目录(我的是C:\Oracle\ora90\network\ADMIN)下的tnsnames.ora文件。这一步做完,基本上剩余的工作就是在sql server 2008里面创建链接服务器了。

2、新建链接服务器。当时我连的oracle数据库是64位11g,虽然安装的是“oracle9i310-客户端简化版”,最终还是成功创建好了链接服务器。“服务器类型”选的是“其他数据源”,访问接口选“Microsoft OLE DB Provider for Oracle”,"产品名称“随便输了点字符,没什么影响;”数据源“就是使用tnsnames.ora里面自己设置好的名称,比如,我在里面设的名称是"JSB",就照搬过来填在此处。“访问接口字符串”这个地方是耽误了我一段时间的,最开始我把这里空着,链接服务器当时也是创建成功了的,但是实际执行最简单的查询都始终处于执行中,没见着报错也没见到出结果。后来是把连接字符串写在这里才最终正常返回结果的!这个位置我是这样设的:data source=JSB;user=jsb123;password=jsb123;Persist Security Info=True。oracle用户名和密码是根据自己的实际情况来设。

这一步骤还没完,还要把选择页切换到“安全性”,选中“使用此安全上下文建立连接(M):",然后输入oracle用户名和密码。最后点【确定】按钮,至此,到oracle的链接服务器创建成功!顺便补充一句,访问接口选“Oracle Provider for OLE DB”,我始终没有创建成功过,先记录下来,如有时间再琢磨了。完整截图如下:

------------------------------------------------偶是分割线-----------------------------------------------------------------------------------------------

转眼间,遇到了64位的操作系统和64位的sql server 2008,要链接的仍然是同一个64位11goracle数据库。本以为跟以前的差不多,但是访问接口下拉选项根本就没有“Microsoft OLE DB Provider for Oracle”,所以32位下的成功经验完全用不上了。用百度搜索后决定用odbc方式,于是先后碰到如下问题:

问题一,打开odbc源配置界面,系统DSN找不到oracle的驱动。后来才搞清楚如果是64位的odbc驱动就用”C:\Windows\System32\odbcad32.exe",如果是32的odbc驱动那就到“C:\Windows\SysWOW64\odbcad32.exe”设置。不晓得我说反没有,按我的印象是这样子的

问题二,终于找到了“oracle9i310-客户端简化版”所安装的odbc驱动,第二个问题随之而来,创建系统DSN在测试连接始终失败。从网上查到的信息是说是这种低版本的连接11g数据库有问题。最终放弃了这个客户端版本另找他法。其实,32位下工作得很好,最终还是没落实清楚到底有没有冤枉它。

问题三,找合适的64位客户端和odbc驱动。很奇怪“oracle9i310-客户端简化版”做得很好,安装后想要的东西都有了,现在为了解决问题三下载了多个压缩包都没使用成功,这个问题耗费了快两天的业余时间,比如下载的“ODAC1120320X64copy.zip",有人说好用,我是一点没用上,放弃。最后起作用的是这两个压缩包:”instantclient-basic-windows.x64-11.2.0.3.0.zip“和”instantclient-odbc-windows.x64-11.2.0.3.0.zip“。推荐自己在甲骨文网站注册帐号后自行下载。好,第三个问题ok。装完整的oracle客户端甚至完整安装oracle数据库也许就不能纠结这么长时间找软件了。但是,仅仅是为了在sql server 2008数据库服务器上创建oracle链接服务器就这样做,必定不能作为很好的方案。这也是花时间找精简版本的重要原因。

问题四,驱动有了,接下来添加系统DSN就碰到问题,在TNS Service Name下拉框无选项。这当然跟tnsnames.ora有关,这才发现前一个步骤根本就没有涉及处理tnsnames.ora。后来是拷贝了“oracle9i310-客户端简化版”使用的tnsnames.ora到:”instantclient-basic-windows.x64-11.2.0.3.0“的安装目录,环境变量里面增加”TNS_ADMIN“,值设为:”instantclient-basic-windows.x64-11.2.0.3.0“的安装目录(我设的是:E:\instantclient_11_2)。下拉选项终于能看到tnsnames.ora里面自己设置好的名称了!测试连接成功,胜利近在眼前哈哈!相关的截图如下(Data Source Name由自己来设,我设的是oracle111。建链接服务器要用到这个名称):

问题五,链接服务器始终创建不成功,报错:链接服务器 的 OLE DB 访问接口 "MSDASQL" 报错。身份验证失败;ORA-12154: TNS: 无法解析指定的连接标识符;Microsoft SQL Server,错误: 7399。几乎又用了一晚上在搜索该问题的解决方法。最后的正确答案是从csdn的旧帖子找到的,原讨论帖地址:http://bbs.csdn.net/topics/70308769 。失败之处就是“访问接口字符串(V)”没有设:MSDASQL!设好以后一切ok。完整的截图如下:

64位环境下的链接服务器终于配置好了,能正常的查询数据。解决总共花费了两天的业余时间。简单的总结如下,如果知识面广恐怕不用频繁的百度和测试,因此耗费大量时间,例如@provider=‘MSDASQL‘,对此一点概念都没有,能百度出来真是有运气的成分!毕竟花时间最后还是解决了,也留了疑问并没有完全了解透彻,还是自我鼓励一下。

时间: 2024-12-09 18:48:30

SQL Server 2008创建oracle链接服务器(心得)的相关文章

SQL SERVER 2008向ORACLE 11G迁移示例

来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g(一) 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g(二) 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g(三) 使用O

SQL Server 2008连接Oracle操作步骤详细记录

SQL Server Management Studio Express(简写SSMS)SQL Server配置管理器:SQL Server Configuration Manager(简写SSCM)一. 开启SQL Server 2008远程连接---如果已经开启,则可以跳过1. 打开SSMS,用Windows身份连接数据库后,右键点击数据库引擎,选择“属性”2. 左侧选择“安全性”,选中右侧的“SQL Server和Windows身份验证模式”以启用混合登录模式3. 左侧选择“连接”,勾选“

通过SQL Server 2008 访问Oracle

之前写过一篇关于SQL Server 访问MySQL 数据库的文章,最近正好又遇到需要访问Oracle 的情况,将配置过程记录下来也供大家参考. 准备工作 事先在需要访问Oracle 数据库的主机上完成以下工作: 1. 安装SQL Server 数据库:SQL Server 2008 R2 Express 2. 安装Oracle 客户端访问程序:Oracle 10g Client 3. 配置Oracle 客户端tnsnames.ora 文件,其中需要注意文件中的数据库别名“ORADB”,该名称在

SQL Server 2008创建数据库

1.数据.数据库.数据管理系统基本概念: 数据:人类有用信息的符号化表示. 数据库:按照数据结构来组织.存储和管理数据的一个仓库. 数据库管理系统(DBMS):可维护.存储并为应用系统提供数据的软件系统(软件+数据库+数据管理员). 可以客观描述的事物被称为"实体",不同的数据体现了不同的实体.数据每一行(Row)对应一个实体,被称为"记录(record)",每个输入项称为"列"(Column),如编号,姓名,学号等.数据"表"

SQL Server 2008 允许远程链接,适用于广域网和局域网

用户在使用SQL Server 2008远程链接时,可能会弹出如下对话框: 在链接SQL服务器时发生网络链接错误或特定实例错误.SQL服务器不存在或者链接不成功.请验证用户名是否正确或SQL服务器是否已经配置远程链接功能.(错误发现方:命名管道供应方.错误代号:40---无法和SQL服务器进行链接) 如何处理这一问题? 用户如果发现这个错误提醒,需要检查三个方面的配置,并做出相关修改.(以下所标注的配置措施均以SQL 2008服务器为模板) 1.用户需要做的第一件事是检查SQL数据库服务器中是否

在64位SQL Server中创建Oracle的链接服务器

一.安装驱动 如果用32位win2003操作系统,会有系统自带的Microsoft OLE DB Provider for Oracle驱动,因此不需要做额外的准备工作,但如果使用的是64位系统,那么这个驱动是没有的,并且微软也不提供这个驱动的64位版本,因此,此时只能使用Oracle提供的Oracle Provider for OLE DB这个驱动. 安装一个完整的Oracle11gR2程序也是一个有效的方法,但这个64位版本的安装包有2个多G,相当庞大,如果仅仅是为了建立链接服务器,完全没必

SQL server 2008创建触发器实例

触发器定义以及分类: 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. ? 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触

sql server通过脚本添加链接服务器

exec sp_addlinkedserver  'ZZSJK','','SQLOLEDB','192.168.10.22'  --链接服务器名称 ‘’ ip地址exec sp_addlinkedsrvlogin 'ZZSJK','false',null,'sa','itdbadmin'exec sp_serveroption 'ZZSJK','rpc out','true'  --这个允许调用链接服务器上的存储过程

SQL Server中创建Oracle的链接服务器