首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 2008 链接到oracle,但是不能查询,报错,

2013-04-12 
sql 2008 链接到oracle,但是不能查询,报错,急,在线等用sql 2008 管理器创建了一个链接oracle 的服务器,创

sql 2008 链接到oracle,但是不能查询,报错,急,在线等
用sql 2008 管理器创建了一个链接oracle 的服务器,创建成功了,能看见oracle的表,但是在sql 写

SELECT *
  FROM [ORCL]..[ZHOU].[ACCOUNTANT_SUBJECT]  语句,执行查询操作,但是报错

消息 7320,级别 16,状态 2,第 1 行
无法对链接服务器 "ORCL" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 执行查询
[解决办法]
访问时应该使用全称.如下:

SQL和ORACLE之间的数据查询

配置透明网关的步骤


前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享

我的OS是WIN2000  
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口


1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
   安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql

2: 配置 LISTENER.ORA
    (SID_DESC =
      (GLOBAL_DBNAME = tg4sql) # 可自己命名
      (PROGRAM = tg4msql)
      (SID_NAME = sql2000)  # SID 自己命名
      (ORACLE_HOME = D:\oracle\ora90)
    )

3: 在 oracle_home\ora90\tg4msql\admin
   建文件 init<SID>.ora 由于LISTENER里定义SID为 sql2000
   因此文件名为:initsql2000.ora
   其中内容为:
   HS_FDS_CONNECT_INFO=svr1.master # svr1为SQL服务器名
   HS_FDS_TRACE_LEVEL=OFF
   HS_FDS_RECOVERY_ACCOUNT=RECOVER
   HS_FDS_RECOVERY_PWD=RECOVER

4: 重启 DATABASE AND LISTENER

5: 配置 tnsnames.ora
tg_sql = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = TCP)(HOST = SVR1)(PORT = 1521)) 
    ) 
    (CONNECT_DATA = 
      (SID = sql2000) 
    ) 
    (HS=OK) 
  ) 

6: 建立 DATABASE LINK
CREATE PUBLIC DATABASE LINK DB_SQL
CONNECT TO SA IDENTIFIED BY PASSWORD
USING 'tg_sql'

7: 完成,测试
  select * from t_test@db_sql

8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
  如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
  如果为 FALSE, 不必使用全称,当出现 
  “ORA-02019:为找到远程数据库的连接说明”
  时,请使用全称,如:
  select * from t_test@db_sql.US.ORACLE.COM

[解决办法]
如下一些方法也行.
在SQL SERVER 2000中访问Oracle数据库服务器的几种方法 

1.通过行集函数opendatasource
要求:本地安装Oracle客户端
select *  from opendatasource('MSDAORA', 'Data Source=XST4;User ID=manager;Password=sjpsjsjs')..MISD.PBCATCOL
其中,MSDAORA是OLEDB FOR Oracle的驱动,

注意:用户名和表名一定要大小,服务器和用户名之间是两个点;
例如:
select top 10 *  from opendatasource('MSDAORA', 'Data Source=HZTEST;User ID=osstest;Password=a1234')..OSSTEST.SUBSCRIBER

本地Oracle客户端配置文件中内容如下:
HZTEST =
  (DESCRIPTION =
    (ADDRESS_LIST =


      (ADDRESS = (PROTOCOL = TCP)(HOST = 132.149.7.19)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = test)
    )
  )

2. 使用MS SQL的openrowset函数
select A.* from openrowset('MSDAORA','XST4';'manager';'sjpsjsjs', 'MISD.PBCATCOL') as A 
order by A.ID
使用这种方式一定要用别名才行

3.使用ODBC方式
select A.* from openrowset('MSDAORA','XST4_ODBC';'manager';'sjpsjsjs', 'MISD.PBCATCOL') as A order by A.ID
XST4_ODBC是ODBC数据源

4.使用链接服务器方式
EXEC SP_ADDLINKEDSERVER
@server='mylinkedserver',      --链接服务器名称
@srvproduct='Oracle',          --固定
@provider='MSDAORA',           --固定
@datasrc='XST4'                --Oracle本地服务名


该文章转载自德仔工作室:http://www.dezai.cn/article_show.asp?ArticleID=17285

热点排行
Bad Request.