`
wibiline
  • 浏览: 117359 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Sqlserver访问Oracle数据库

阅读更多

 环境介绍

Sqlserver :2008版本

Oracle:10g

 

 Sqlserver配置

 

1.  要安装Sql server数据库

 

2.  要有Oracle客户端

 

3.  配置tnsnames.ora文件(db_1\NETWORK\ADMIN目录下)

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics