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',对此一点概念都没有,能百度出来真是有运气的成分!毕竟花时间最后还是解决了,也留了疑问并没有完全了解透彻,还是自我鼓励一下。
SQL Server 2008创建oracle链接服务器(心得)的更多相关文章
- 在64位SQL Server中创建Oracle的链接服务器
当我们同时使用SQL Server和Oracle来存储数据时,经常会用到跨库查询.为了方便使用跨库查询,一个最好的办法就是通过创建链接服务器来实现.既可以在SQL Server中创建Oracle的链接 ...
- 在64位SQL Server中创建Oracle的链接服务器 Link Server
有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个s ...
- SQL SERVER 2008向ORACLE 11G迁移示例
来源于:http://www.cnblogs.com/hiizsk/ 由SQL SERVER 2008向ORACLE 11G迁移过程记录之一-表 使用Oracle Sql Developer将SQL ...
- SqlServer中创建Oracle链接服务器
SqlServer中创建Oracle链接服务器 第一种:界面操作 (1)展开服务器对象-->链接服务器-->右击“新建链接服务器” (2)输入链接服务器的IP (3)链接成功后 第二种:语 ...
- SQL Server 2008 允许远程链接 解决方法
用户在使用SQL Server 2008远程链接时,可能会弹出如下对话框: 在链接SQL服务器时发生网络链接错误或特定实例错误.SQL服务器不存在或者链接不成功.请验证用户名是否正确或SQL服务器是否 ...
- 通过SQL Server 2008 访问Oracle 10g
原文地址:http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 之前写过一篇关于SQL ...
- SQL Server 2008创建数据库
1.数据.数据库.数据管理系统基本概念: 数据:人类有用信息的符号化表示. 数据库:按照数据结构来组织.存储和管理数据的一个仓库. 数据库管理系统(DBMS):可维护.存储并为应用系统提供数据的软件系 ...
- SQL Server 2008 允许远程链接,适用于广域网和局域网
用户在使用SQL Server 2008远程链接时,可能会弹出如下对话框: 在链接SQL服务器时发生网络链接错误或特定实例错误.SQL服务器不存在或者链接不成功.请验证用户名是否正确或SQL服务器是否 ...
- sql server 2008 创建新数据库报错、创建表报错、更改表的设计报错
一:创建数据库报错如下: 二:解决,将软件以管理员身份运行 三:创建表报错如下图: 四:解决办法,在你创建的数据库下面的安全里,找到你创建的用户,属性,添加权限,红色标注,然后确定: 五:更改表的设计 ...
随机推荐
- 重新用delphi7写东西
晚上开始写通讯录的程序,又对表进行点修改.重新开始用delphi7很不习惯,太不好用了. TArecord=record Const UserName=’YHName’; ..... End; 这个在 ...
- 标签案例-开发foreach标签
if(item.getClass().isArray()){ this.collection = new ArrayList(); int length = Array.getLength(items ...
- 设计模式之六大原则——迪米特法则(LoD,LKP)
转载于:http://www.cnblogs.com/muzongyan/archive/2010/08/05/1793000.html 定义: 迪米特法则(Law of Demeter,LoD)也 ...
- Linux系统glibc库版本信息查看
原文链接:http://www.jbxue.com/LINUXjishu/29946.html 1. CentOS /lib/i386-linux-gnu/libc.so. 或 rpm -qi gli ...
- js 图片加载完后的处理事件
//图片加载完成后再显示页面 document.getElementById('icon').onload=function(){ document.getElementById('wrap').st ...
- erlang ssl
http://itindex.net/detail/50701-tomcat-bio-nio.apr http://blog.csdn.net/libing1991_/article/details/ ...
- mac eclipse 添加pydev插件 步骤
前提:eclipse环境可以正常使用 python环境可以正常使用 1.下载pydev(http://www.pydev.org/)
- AJAX发送参数到后台,前台火狐debug报undefine
后面经过查找:估计是数据并不是Json格式,由于var PATIENT_ID=getIdSelections();其中PATIENT_ID是数组,所以必须转成字符串. $('#table').on(' ...
- Linux 搭建NTP服务器
NTP服务器[Network Time Protocol(NTP]是用来使计算机时间同步化的一种协议,NTP服务器可以对其它服务器做时间同步化,从而达到时间统一. 配置环境及要求: A. 假设10.8 ...
- Linux 设置定时任务crontab命令
1. crontab命令概念 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使 ...