Oracle dblink/DB2 Federation/SQL Server linkserver

最近项目中用到了dblink,顺便验证了几种常用数据库的类似功能。

ORACLE

--创建dblink,注意如果不加public则只能当前用户使用该dblink
create public database link link名 connect to 用户名 identified by 密码 using '实例名';

--注意事项,当global_names参数为true时,dblink的名字必须与global_name(SELECT * FROM GLOBAL_NAME)一致
--可通过下面语句查看该参数
SQL> show parameter global_names
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     FALSE


--也可修改该值
alter system set global_names=true;


--使用dblink
--查询DBLINK
select * from dba_db_links;  

--查询数据
select * from dual@link名;

--删除dblink
drop public database link link名


DB2

1.设置数据库属性
查看联邦是否开启
get dbm cfg
...
Federated Database System Support           (FEDERATED) = YES
...
如果该值为NO,则需要执行
db2 update dbm cfg using federated yes  
开启联邦支持
执行后需要重启
db2stop force
db2start
重新启动数据库

2.创建远程数据库的node
db2 catalog tcpip node 节点名 remote 服务器ip server 端口

3.创建数据库 别名
db2 catalog database 数据库名 at node 节点名  

4.创建wrapper
db2 create wrapper drda  

5.创建server
db2 create Server serverName type DB2/UDB version 9.7 wrapper "DRDA" authid "用户名" password "密码" options (dbname '远程数据库名')

6.创建mapping
db2 create User Mapping for 本地数据库用户 server "serverName" options (remote_authid '远程数据库用户名', remote_password '远程数据库密码')

删除命令:
drop User Mapping for 本地数据库用户 server "serverName"

7.创建nickname
db2 create NickName schema.tableName for serverName.schema.tableName

8.其他命令
db2 list node directory
db2 list db directory

DROP SERVER server_name
DROP USER MAPPING FOR authorization_name SERVER server_name
DROP NICKNAME nickname
DROP WRAPPER wrapper_name 


SQL SERVER

--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go

--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)

--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值