SqlServer创建远程链接服务器(SqlServer/MySql/Oracle)

一、SqlServer

--创建远程链接服务器
EXEC master.dbo.sp_addlinkedserver 
@server = N'EPMS_Haha'        --链接服务器的名称
,@srvproduct=N'h3cepms02-db'  --SqlServer默认不需要写
,@provider=N'SQLNCLI'         --不同的库都是不一样的(SQLNCLI或SQLOLEDB都行)
,@datasrc=N'h3cepms02-db,1523'--目标数据库所在的服务器

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'EPMS_Haha'   --链接服务器的名称
,@useself=N'False'         --固定这么写
,@locallogin=NULL          --本地操作用户名(sa或null都行)
,@rmtuser=N'user99999'     --目标数据库所在的服务器的用户名
,@rmtpassword='user99999'  --目标数据库所在的服务器的密码

--删除远程链接服务器
EXEC sp_dropserver EPMS_Haha
EXEC sp_dropserver 'EPMS_Haha'

--用远程链接服务器进行查询方法1:简洁但性能弱
select *, GETDATE() as SyncTime from EPMS_Haha.Epms.dbo.UserInfo
--用远程链接服务器进行查询方法1:稍复杂但性能强
select *, GETDATE() as SyncTime from openquery(EPMS_Haha,'select * from Epms.dbo.UserInfo')

二、MySql

要想创建SqlServer访问MySql的链接服务器,首先要在MySqlConnector中添加数据源,然后在SqlServer中执行脚本创建链接服务器。

注意:
SqlServer连接MySql需要先安装mysql-connector-odbc,下载地址:https://dev.mysql.com/downloads/connector/odbc/
连接方与被连接方的MySQL ODBC驱动版本不一致时,用户名和密码正确也有可能连接失败!

SqlServer创建远程链接服务器(SqlServer/MySql/Oracle)_第1张图片

--创建远程链接服务器
EXEC master.dbo.sp_addlinkedserver 
@server = N'CMDB_Haha'  --链接服务器的名称
,@srvproduct=N'MySql'   --产品名称
,@provider=N'MSDASQL'   --OLEDB驱动名称(固定)
,@datasrc=N'cmdb'       --MySql数据源名称

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'CMDB_Haha' --链接服务器的名称
,@useself=N'False'       --固定这么写
,@locallogin=null        --本地操作用户名(sa或null都行)
,@rmtuser=N'user99999'   --MySql数据源的账号
,@rmtpassword='user99999'--MySql数据源的密码

--删除远程连接服务器
EXEC sp_dropserver CMDB_Haha
EXEC sp_dropserver 'CMDB_Haha'

--用远程链接服务器进行查询方法1:简洁但性能弱
select *, GETDATE() as SyncTime from CMDB_Haha.Epms.dbo.UserInfo
--用远程链接服务器进行查询方法1:稍复杂但性能强
select *, GETDATE() as SyncTime from openquery(CMDB_Haha,'select * from Epms.dbo.UserInfo')

三、Oracle

注意:
SqlServer连接Oracle需要先安装Oracle客户端,下载地址:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

--创建远程连接服务器(全路径DataSource)
EXEC master.dbo.sp_addlinkedserver 
@server = N'DMS_Haha'          --链接服务器的名称
, @srvproduct=N'oracle'        --产品名称
, @provider=N'OraOLEDB.Oracle' --OLEDB驱动名称(固定)
, @datasrc=N'hengha.google.com:1521/barp' --格式(ip:端口/SERVICE_NAME)

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'DMS_Haha' --链接服务器的名称
,@useself=N'False'      --固定这么写
,@locallogin=NULL       --本地操作用户名(sa或null都行)
,@rmtuser=N'user99999'  --Oracle数据源的账号
,@rmtpassword='user99999'--Oracle数据源的密码

--删除远程连接服务器
EXEC sp_dropserver DMS_Haha
EXEC sp_dropserver 'DMS_Haha'

--用远程链接服务器进行查询方法1:简洁但性能弱
select *, GETDATE() as SyncTime from DMS_Haha.Epms.dbo.UserInfo
--用远程链接服务器进行查询方法1:稍复杂但性能强
select *, GETDATE() as SyncTime from openquery(DMS_Haha,'select * from Epms.dbo.UserInfo')

除了利用DataSource全路径创建远程连接服务器外,用DataSource简称也可以创建远程链接服务器,不过需要先添加配置。

--创建远程连接服务器(DataSource简称)
EXEC master.dbo.sp_addlinkedserver 
@server = N'DMS_Haha'          --链接服务器的名称
, @srvproduct=N'oracle'        --产品名称
, @provider=N'OraOLEDB.Oracle' --OLEDB驱动名称(固定)
, @datasrc=N'barp' --格式(ip:端口/SERVICE_NAME)

SqlServer创建远程链接服务器(SqlServer/MySql/Oracle)_第2张图片

你可能感兴趣的:(SQL基础)