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
'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.表名')
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
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别名。
====================================================================================================
检查tnsnames.ora中的配置,连接串的data source使用tnsnames.ora中设置tnsnames别名。
#7
第一:你得会用net manager(oracle),如果不会用,那有一点点的小麻烦,那是配置oracle网络标识的地方,在这里要设置一个连接到你的oracle例程的本地服务命名.
第二:有了第一步的配置(本地服务名),就可以配置其他的了,不管是odbc还是oledb provider for 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
'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.表名')
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
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别名。
====================================================================================================
检查tnsnames.ora中的配置,连接串的data source使用tnsnames.ora中设置tnsnames别名。
#7
第一:你得会用net manager(oracle),如果不会用,那有一点点的小麻烦,那是配置oracle网络标识的地方,在这里要设置一个连接到你的oracle例程的本地服务命名.
第二:有了第一步的配置(本地服务名),就可以配置其他的了,不管是odbc还是oledb provider for oracle,都可以轻松设置,当然啥用户名什么的,都得配置好
第三:可以查询了
第二:有了第一步的配置(本地服务名),就可以配置其他的了,不管是odbc还是oledb provider for oracle,都可以轻松设置,当然啥用户名什么的,都得配置好
第三:可以查询了
#8
不会设置oracle net manager一切都很难明白
#9
呵呵,谢谢各位,已经连接成功了.改日把贴结了.
#10
請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.
#11
請問能不能把整個連接的整個過程都弄出來啊, 什麼圖片加說明, 做點貢獻啊, 謝謝.