SQLSERVER读取ORACLE缺少数据,OPENQUERY只能读取一条数据
在SQL2000配置链接服务器读取ORACLE数据, 根据网络上找到的绿色版配置资料进行了配置,http://blog.csdn.net/sunwork888/article/details/42123681,配置成功,通过 select *?FROM OPENQUERY(DADB,'select aay002 from af1112?') 也可以查询到数据,完成! 。。。。。。 经过一段时间使用业务部门反应数据量缺失,对数对不上,检查发现,SQLSERVER 读取数据1条,使用第三方软件读取ORACLE数据为20条。 更换SQLSERVER版本 2000 2005 均无效果,怀疑是绿色驱动问题。 下载ORCALE 官方客户端安装,仍然不行,最后查找资料发现,链接服务器的配置也与之前有所不同,按下图配置后解决问题! ?环境介绍
Sqlserver :2008版本 Oracle:10g ? ?Sqlserver配置 ? 1.? 要安装Sql server数据库 ? 2.? 要有Oracle客户端 ? 3.? 配置tnsnames.ora文件(db_1NETWORKADMIN目录下) Xml代码??
? ? 4.? 测试tns是否配置成功 ?
? 看到以下信息就知道配置成功了: ? ? ? 5.? 创建链接服务器 ? 打开Sqlserver界面管理器,->服务器对象->?链接服务器,右键新建一个链接服务器 ? 常规属性配置: ? ? ? 安全性配置: ? ? 6.?? 测试访问Oracle ? select * from?DEMO..USERNAME.TABLENAME;?? (注意红色要大写,若查询某个字段要用大写。链接服务器后两点) ? 或者用以下方式查询 select * from openquery(DEMO,'SELECT * FROM?USERNAME.TABLENAME') ? 说明:DEMO..USERNAME.TABLENAME =?链接服务器..用户名.表名 ? 这样配置好后,就可以在Sqlserver上直接对Oracle的表进行增删改查了。 ? 常见错误 ? 1. 无法从表 ""JIFA_BPAF"."DEMO_ITEM"" 删除数据。出现可恢复的、特定于提供程序的错误,如 RPC 失败。 ? 问题分析:权限不足。在创建链接服务器的第二步安全性设置,用于连接Oracle的用户没有删除Oracle数据库下JIFA_BPAF该用户的DEMO_ITEM表的权限 ? 问题解决:JIFA_BPAF用户下的DEMO_ITEM表删除权限授权给指定用户。 ?? grant delete on demo_item to user; ?或者再创建新的链接服务器,用该用户登陆连接即可 ? 2.? 链接服务器 "WEBESTAT" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 返回了 "NON-CLUSTERED and NOT INTEGRATED" 索引 "PK_RESOURCEID",其中有不正确的书签序号 0。 问题分析:Oracle的table表建立了一个索引“PK_RESOURCEID”,然后Sqlserver访问Oracle时用了自身的地址做为访问Oracle的索引路径。 ?
问题解决:?服务器对象->链接服务器->访问接口->OraOLEDB.Oracle
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |