100分求sql server2000连接oracle 9的详细步骤

时间:2021-01-12 20:23:04
小弟最近在做sql server2000连接oracle9,参考了很多资料,可是就是连不上,现请教各位高手.详细信息如下:
1.操作系统是xp+sp4, sql server2000和oracle9都装在同一台机子上.(oracle装的是服务器,所以其客户端就不用装了).通过各自客户端都能访问.
2.mdac2.7软件已经装了(但是不知道该软件是否要装)
3.注册表没有改(微软的文档说要是改,但是我没有看到对oracle9怎么改)
4.在sql server2000的企业管理器的链接服务器中新建一个.选择其他服务类型,程序名称为Microsft Ole DB Provider for Oracle ,名称为bao,数据源为 本机的IP地址,字符串为空;安全性中,本地登陆为sa,远程用户和密码都为system.测试过,下面的选项选第三个.
5.在查询分析器中select * from opensquery(bao,'select * from system.hr.jobs');
报错。错误信息为:
OLE DB 提供程序‘MSDAORA’报错
[OLE DB Provider returned message: ORA-12514:TNS:listener could not resolve SERVICE_NAME given in connect descriptor]
如果我设数据源为IP/oracle(此名称为oracle的net manage的服务标识)则,报错为:could not resolve serrice name

看了很多资料,都没有搞定,肯请各位兄弟帮忙。谢谢!!!分不够再加

11 个解决方案

#1


EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO

#2


配置透明网关的步骤


前一段花了些时间配置 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

#3


我用的是sql server 2000连oracle9,不是oracle连sql server.谢谢

#4


 1、在SQL Server 2000服务器上安装Oracle 9i的客户端。
2、配置监听程序。
3、配置服务名。
4、用OpenQuery()访问Oracle服务器。

如:

select * from OpenQuery('链接服务器名','select * from system.表名')
 
 

#5


Oracle:
EXEC sp_addlinkedserver
@server = '<LinkedServerName>',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = '<ServerName>'

--查询示例
select * from srv_lnk.数据库名.dbo.表名



--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go

#6


ORA-12514:TNS:listener   could   not   resolve   SERVICE_NAME   given   in   connect   descriptor] 
====================================================================================================
检查tnsnames.ora中的配置,连接串的data source使用tnsnames.ora中设置tnsnames别名。

#7


第一:你得会用net manager(oracle),如果不会用,那有一点点的小麻烦,那是配置oracle网络标识的地方,在这里要设置一个连接到你的oracle例程的本地服务命名.
第二:有了第一步的配置(本地服务名),就可以配置其他的了,不管是odbc还是oledb provider for oracle,都可以轻松设置,当然啥用户名什么的,都得配置好
第三:可以查询了

#8


不会设置oracle net manager一切都很难明白

#9


呵呵,谢谢各位,已经连接成功了.改日把贴结了.

#10


請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.

#11


請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.

#1


EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO

#2


配置透明网关的步骤


前一段花了些时间配置 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

#3


我用的是sql server 2000连oracle9,不是oracle连sql server.谢谢

#4


 1、在SQL Server 2000服务器上安装Oracle 9i的客户端。
2、配置监听程序。
3、配置服务名。
4、用OpenQuery()访问Oracle服务器。

如:

select * from OpenQuery('链接服务器名','select * from system.表名')
 
 

#5


Oracle:
EXEC sp_addlinkedserver
@server = '<LinkedServerName>',
@srvproduct = 'Oracle',
@provider = 'MSDAORA',
@datasrc = '<ServerName>'

--查询示例
select * from srv_lnk.数据库名.dbo.表名



--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go

#6


ORA-12514:TNS:listener   could   not   resolve   SERVICE_NAME   given   in   connect   descriptor] 
====================================================================================================
检查tnsnames.ora中的配置,连接串的data source使用tnsnames.ora中设置tnsnames别名。

#7


第一:你得会用net manager(oracle),如果不会用,那有一点点的小麻烦,那是配置oracle网络标识的地方,在这里要设置一个连接到你的oracle例程的本地服务命名.
第二:有了第一步的配置(本地服务名),就可以配置其他的了,不管是odbc还是oledb provider for oracle,都可以轻松设置,当然啥用户名什么的,都得配置好
第三:可以查询了

#8


不会设置oracle net manager一切都很难明白

#9


呵呵,谢谢各位,已经连接成功了.改日把贴结了.

#10


請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.

#11


請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.