SQL Server到Oracle连接服务器的实现
作者:中国论坛网收集 来源:http://www.51one.net 加入时间:2004-8-25
SQL Server到Oracle连接服务器的实现
作者:Jennifer
本文以SQL Server 2k为例说明SQL Server到Oracle连接服务器的具体实现过程。1.要求pc机上安装oralce客户端软件和sqlserver2000软件。2.客户端的配置tnsnames.ora文件,配置所要连接的数据库服务器(windows,unix等平台均可以)
eg:tnsnames.ora
......
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.11.90)(PORT = 1521))
)
(CONNECT_DATA =
(sid = blue)
(SERVER = DEDICATED)
)
)
......3.配置windows的ODBC数据源:
开始菜单—》设置—》管理工具—》数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择Microsoft ODBC for oracle—》自定义数据源名称(最好跟tns中连接串同名!)—》服务器名称(必填!填写tns文件中的连接串名称)—》完成。4.配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:Microsoft OLE DB Provider for Oracle; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确定。5.准备工作全部完成啦!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该oracle数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[ORACLE用户].[表名]。更详细具体的使用这里不再赘述。
作者:中国论坛网收集 来源:http://www.51one.net 加入时间:2004-8-25
SQL Server到Oracle连接服务器的实现
作者:Jennifer
本文以SQL Server 2k为例说明SQL Server到Oracle连接服务器的具体实现过程。1.要求pc机上安装oralce客户端软件和sqlserver2000软件。2.客户端的配置tnsnames.ora文件,配置所要连接的数据库服务器(windows,unix等平台均可以)
eg:tnsnames.ora
......
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.11.90)(PORT = 1521))
)
(CONNECT_DATA =
(sid = blue)
(SERVER = DEDICATED)
)
)
......3.配置windows的ODBC数据源:
开始菜单—》设置—》管理工具—》数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择Microsoft ODBC for oracle—》自定义数据源名称(最好跟tns中连接串同名!)—》服务器名称(必填!填写tns文件中的连接串名称)—》完成。4.配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:Microsoft OLE DB Provider for Oracle; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确定。5.准备工作全部完成啦!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该oracle数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[ORACLE用户].[表名]。更详细具体的使用这里不再赘述。
解决方案 »
- 求助!动态语句的效率问题
- "无效的描述器索引"
- 求一sql语句
- 我想知道在SQL SERVER 2005中如何读取视图的内容呢?
- 主从表从VFP导到SQL的问题
- ASP+SQLSERVER事务处理的一致性如何做???
- CHECKDB 在表 'sys.sysobjvalues' (对象 ID 60)中发现 0 个分配错误和 2 个一致性错误。
- 请问哪里有SQL SERVER 6.5下载,实在是买不到了,急死我了!!!!!!!!!!!
- 如何用JDBC访问数据库。包括JDBC是否有类似ODBC的驱动程序(NULL)谢谢
- 今年寒假该怎么过?
- 如何查找2个相同结构表格数据中不相同的数据
- 简单的sql求教?
前一段花了些时间配置 TRANSPARENT GATEWAY
现在把心得贴出来与大家共享我的OS是WIN2000
ORACLE 9.0
SQLSERVER2000
HOSTNAME : SVR1
都使用 tcp/ip 默认端口
1: 安装 TRANSPARENT GATEWAY 选件(我安装的是FOR MSSQL)
安装完成了以后有这样一个目录 oracle_home\ora90\tg4msql2: 配置 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=RECOVER4: 重启 DATABASE AND LISTENER5: 配置 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_sql8: 请注意使用 DBLINK 时,INIT.ORA中 GLOBAL_NAME 的设置,
如果为 ture , 请使用DBLINK的全称,可在 all_db_links 中查到,
如果为 FALSE, 不必使用全称,当出现
“ORA-02019:为找到远程数据库的连接说明”
时,请使用全称,如:
select * from t_test@db_sql.US.ORACLE.COM
要求:本地安装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
这个错误是因为在sql server中执行的update语句引发了分布式事务造成的,sql server和oracle安装在不同机器上,且两台机器上都启动了DTS,并开放了135端口,
下面的是存储过程中的两条语句
update dbo.dialoutdetail set successCnt=1 ---这条是在sql server中执行的
update ems..SOSV4.VOICE_INFORM_TASK_DETAIL set CALL_RESULT='N'
WHERE TASK_ID=@tasknum and VOICE_TASK_DETAIL_PHONE=@dialnum ----这条是修改对应的oracle表
还有其他原因吗?
不过还是谢谢楼上各位的帮助和支持
各位接分吧