sql server 中访问oracle

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数据库! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值