sql server 中访问oracle

转载 2007年09月14日 12:50:00

1.使用连接服务器
图形界面:打开SQLSERVER的企业管理器,展开相应的DATABASE,在安全性下就有连结服务器的项目.点击右键即可添加
注意,要有管理员的权限才行
操作之前,你的电脑必须先设定好ORACLE的CLIENT,能用TNSPING通你的TNS.

企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:Microsoft OLE DB Provider for Oracle; 产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=username;Password=userpasswd(或者按如下格式:UID=username;PWD=userpasswd),这里的用户名和密码对应所要连接的oracle数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入oracle的数据库用户名和密码—》服务器选项标签页可默认—》确定。


命令行下:
添加连结服务器sp_addlinkedserver 'MyLinkServer','ProductName,'MSDAORA','MIX01'
参数分别是 连结服务器名称(必须)   产品名称   连接类型(必须)      资料来源(必须,而且是TNS的名称) 
光添加还是不够的,还要设置登入ORACLE的用户名和密码
1.如果SQL里面有用户帐号和密码与ORACLE里面一样,这里假如是SysLogin,则用
sp_addlinkedsrvlogin 'MyLinkServer',true,'SysLogin'
2.Windows 2000的Administrator帐号将对应到Oracle的scott使用者帐号,其密码为tiger: 
sp_addlinkedsrvlogin 'MyLinkServer',false,'W2000AS/Administrator', 'scott', 'tiger'
3.让所有SQL Server的登入帐号都以scott的身分,密码为tiger登入Oracle Server: 
sp_addlinkedsrvlogin 'MyLinkServer', false, NULL, 'scott', 'tiger'

这样的话,SQLSERVER 就与 ORACLE连结好了,如何使用呢?
假如已连结到ORACLE里面用户为IQCM资料表为GRADE
连结的表格式为: [连接服务器名]..[ORACLE用户].[表名]。
1.查询:SELECT * FROM MyLinkServer..IQCM.GRADE
2.插入:INSERT MyLinkServer..IQCM.GRADE (deptno,dname,loc) values (2,NULL,NULL)
插入需要注意,不需要包含INTO关键词,要传递实际的字段值,而非使用DEAULT关键词
3.更新:UPDATE MyLinkServer..IQCM.GRADE set deptno = 3 WHERE deptno = 2
这个没特殊情况

2.使用OPENROWSET连接

不同类型或服务器间数据库的访问还可以用OPENROWSET
假如我们在电脑上已经设定好ORACLE的设置,且有个MIX01的TNS在侦听,
MIX01上用个用户为IQCM.密码也为iqcm,且则有GRADE,则写法为:
select * from openrowset('MSDAORA','MIX01';'IQCM';'iqcm',' select * from GRADE')
这时有可能会报个错,大致意思是Ad Hoc 对MSDAORA访问被拒绝,
这个错误需要修改注册表里的PROVIDER的键值,具体方法是,开始运行REGEDIT,展开HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/Providers/,选中MSDAORA,新增一个键值,名称为DisallowAdhocAccess ,类型为DWORD,值为0,也就是启用AD HOC Access MSDAORA.
此注册表下还有其它PROVIDER,也可做相应更改



注意事项

在您有效地设定连结服务器之前,您必须了解Oracle与SQL Server之间资料型态的差异。如果您将历史资料同时存放在Oracle与SQL Server,则需注意Oracle之date资料型态可存放至纪元前4712年1月1号,但SQL Server的datetime资料型态所存放的资料是从公元1753年1月1号开始。除此之外,Oracle的date资料型态可存放至0.01秒,而SQL Server之datetime资料型态则可存放至0.001秒。如果想得到更多有关SQL Server datetime资料型态的相关信息,请参阅Kalen Delaney的著作,Inside SQL Server。如果您想获取更多有关Oracle资料型态的相关资料,请到http://technet.oracle.com。您可以在该网站免费注册后获取Oracle之文件资料。

 某些时候您可能需要从多个数据库查询资料,甚至是从另外一台数据库服务器!当其它的数据库为Oracle时,这工作将会变得较具挑战性。Microsoft本身并不打算针对Oracle数据库使用者提供这类顾客服务,而Oracle也不会为SQL Server使用者提供支持。然而,连结服务器却可以方便您从SQL Server存取Oracle数据库的资料。现在您已经了解如何组态并使用Oracle连结服务器,您可以身处于较自在舒服的SQL Server环境,而实时地存取Oracle数据库! 

Oracle同时访问多个SQL Server的事项方法

如何在Oracle里设置访问多个SQL Server数据库?假设我们要在Oracle里同时能访问SQL Server里默认的pubs和Northwind两个数据库。   1、在安装了Oracle9i ...
  • zqpgood
  • zqpgood
  • 2011年01月19日 16:41
  • 295

sql server 2000访问oracle数据库

  • 2009年02月12日 10:53
  • 40KB
  • 下载

通过SQL Server 访问Oracle

方法1. 通过oracle 客户端tnsnames.ora直接oracle 1. 安装SQL Server 数据库:SQL Server 2008 R2 Express 2. 安装Oracle 客...

oracle gateways 访问 sql server

相关系统环境 操作系统:windows server 2008 服务器:oracle database 11.2.0.1.0 gateways:oracle database gate...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql server 中访问oracle
举报原因:
原因补充:

(最多只允许输入30个字)