一、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驱动版本不一致时,用户名和密码正确也有可能连接失败!
--创建远程链接服务器
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)