在SQLSERVER 2005中添加oracle10G链接

首先我们添加链接服务器:
exec sp_addlinkedserver 'test','oracle','MSDAORA','test'
EXEC sp_addlinkedserver
@server = 'server'--链接服务器的本地名称。也允许使用实例名称,例如MYSERVER\SQL1
@srvproduct = 'product_name' --OLE DB数据源的产品名。对于SQL Server实例来说,product_name是'SQL Server'
@provider = 'provider_name' --这是OLE DB访问接口的唯一可编程标识。当没有指定它时,访问接口名称是 SQL Server数据源。SQL Server显式的provider_name是 SQLNCLI(Microsoft SQL Native Client OLE DB Provider)。Oracle的驱动分为两种,一种是 MSDAORA(微软提供),Oracle 8或更高版本的是OraOLEDB.Oracle(oracle提供)。MS Access和MS Excel的是 Microsoft.Jet.OLEDB.4.0。IBM DB2的是DB2OLEDB,以及ODBC数据源的是MSDASQL
@datasrc = 'data_source' --这是特定OLE DB访问接口解释的数据源。对于SQL Server,这是 SQL Server(servername或servername\instancename)的网络名称。对于Oracle,这是SQL*Net别名。对于 MS Access和MSExcel,这是文件的完整路径和名称。对于ODBC数据源,这是系统DSN名称
@location = 'location' --由特定OLE DB访问接口解释的位置
@provstr = 'provider_string' --OLE DB 访问接口特定的连接字符串。对于ODBC连接,这是ODBC连接字符串。对于MS Excel,这是Excel 5.0
@catalog = 'catalog' --catalog的定义变化基于OLE DB访问接口的实现。对于SQL Server,这是可选的数据库名称,对于DB2,这个目录是数据库的名称


reference:http://technet.microsoft.com/zh-cn/library/ms190479(v=sql.90).aspx

exec sp_addlinkedsrvlogin 'test','false',null,'user_01','test' --第三个参数说明一下,这里填NULL,相当于图形界面使用此安全上下文建立链接

EXEC sp_addlinkedsrvlogin 
@rmtsrvname = 'test'--要添加登录名映射的本地链接服务器
@useself = false, --当使用true值时,使用本地SQL或Windows登录名连接到远程服务器名。如果设为false,存储过程 sp_addlinkedsrvlogin的locallogin、rmtuser和rmtpassword参数将应用到新的映射中
@locallogin = NULL--这是映射到远程登录名的SQL Server登录或Windows用户的名称。如果这个参数置为NULL,映射将应用SQL Server实例中的所有本地登录名
@rmtuser = '架构名'--用来连接到链接服务器的用户/登录名的名称
@rmtpassword = '访问密码' --用来连接到链接服务器的用户/登录名的密码
设置完后:
--查看链接服务器信息
select name,product,provider,data_source,query_timeout,lazy_schema_validation,is_remote_login_enabled,is_rpc_out_enabled
from sys.servers where is_linked=1
--查看链接登录名
select s.name linkedServerName,s.data_source linkedserver_source,s.is_linked,s.modify_date,
ll.remote_name,ll.local_principal_id,ll.uses_self_credential,
p.name localLoginName
from sys.Linked_logins ll
inner join sys.servers s on s.server_id=ll.server_id
left join sys.server_principals p on p.principal_id=ll.local_principal_id
where s.is_linked = 1
相关的还有:
sp_dropserver
sp_serveroption
sp_droplinkedsrvlogin 'oldname',name,'newname'

二 访问方式:
select * from openquery(test,'select * from USER_01.TEST');

select * from TEST..USER_01.TEST   --注意大小写
这样两者都行的,但是有点“奇怪”的就是:
select * from openquery(test,'select * from user_tables')是可以的.OPENQUYER相当于直接调于ORACLE里的执行.速度快.但写嵌套麻烦.

select * from TEST..ALL_TABLES是行不通的

我们这样:select * from TEST..SYS.DBA_USERS。
 
出现这种部问题的原因为msdora不支持oracle的特有字段类型clob,blob。
这里额外需要提一下的就是oracle.oledb要启用允许进程内。

posted on 2010-08-02 13:43 snowhill 阅读(558) 评论(0)  编辑 收藏 引用 所属分类: 数据库-oracle


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

公告

又一年...........

留言簿(3)

随笔分类(13)

文章分类(131)

文章档案(124)

c++

java

linux

oracle

常用软件

其他

网络配置

系统安全

音乐

搜索

最新评论

阅读排行榜