加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 13:12:00 所属栏目:MsSql教程 来源:网络整理
导读:在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_1NETWORKADMIN目录下)

Xml代码??

收藏代码

  1. mytest=??
  2. ??(DESCRIPTION?=??
  3. ????(ADDRESS_LIST?=??
  4. ??????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?*.*.*.22)(PORT?=?1521))??
  5. ??????(LOAD_BALANCE?=?yes)??
  6. ??????(FAILOVER=ON)??
  7. ????)??
  8. ????(CONNECT_DATA?=??
  9. ??????(FAILOVER_MODE=(TYPE=select)(METHOD=basic))??
  10. ??????(SERVER?=?DEDICATED)??
  11. ??????(SERVICE_NAME?=?mysid)??//sid??
  12. ??)??

?

?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读