SQLSERVER读取ORACLE缺少数据,OPENQUERY只能读取一条数据

SQLSERVER读取ORACLE缺少数据,OPENQUERY只能读取一条数据,第1张

概述在SQL2000配置链接服务器读取ORACLE数据, 根据网络上找到的绿色版配置资料进行了配置,http://blog.csdn.net/sunwork888/article/details/42123681,配置成功,通过 select * FROM OPENQUERY(DADB, 'select aay002 from af1112 ') 也可以查询到数据,完成! 。。。。。。 经过一段时间使

在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_1\NETWORK\admin目录下)

Xml代码  

mytest=     (DESCRIPTION =       (ADDRESS_List =         (ADDRESS = (PROTOCol = TCP)(HOST = *.*.*.22)(PORT = 1521))         (LOAD_BALANCE = yes)         (FAIlovER=ON)       )       (CONNECT_DATA =         (FAIlovER_MODE=(TYPE=select)(METHOD=basic))         (SERVER = DEDICATED)         (SERVICE_name = mysID)  //sID     )  

 

 

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

总结

以上是内存溢出为你收集整理的SQLSERVER读取ORACLE缺少数据,OPENQUERY只能读取一条数据全部内容,希望文章能够帮你解决SQLSERVER读取ORACLE缺少数据,OPENQUERY只能读取一条数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1168651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存