连接多个数据库sql
以连接3个数据库为例。
IF(SELECT
COUNT(SRVID)
FROM
MASTER..SYSSERVERS
WHERE
SRVNAME IN( 'srv_lnk0' , 'srv_lnk1' , 'srv_lnk2' )
)<>0
BEGIN
exec sp_dropserver 'srv_lnk0','droplogins'
exec sp_dropserver 'srv_lnk1','droplogins' // droplogins:删除相关的远程服务器和链接服务器登录名
exec sp_dropserver 'srv_lnk2','droplogins'
END
exec sp_addlinkedserver 'srv_lnk0','','SQLOLEDB','服务器名1\SQLEXPRESS'
exec sp_addlinkedsrvlogin 'srv_lnk0','false',null,'user' , 'PASSWORD'
exec sp_addlinkedserver 'srv_lnk1','','SQLOLEDB','服务器名2\SQLEXPRESS'
exec sp_addlinkedsrvlogin 'srv_lnk1','false',null,'user' , 'PASSWORD'
exec sp_addlinkedserver 'srv_lnk2','','SQLOLEDB','服务器名3\SQLEXPRESS'
exec sp_addlinkedsrvlogin 'srv_lnk2','false',null,'user' , 'PASSWORD'
SELECT *
FROM
srv_lnk0.TKC.dbo.TABLE1 AS A1
UNION(
SELECT
*
FROM
srv_lnk1.TKC.dbo.TABLE1 AS A1
)
UNION(
SELECT
*
FROM
srv_lnk2.TKC.dbo.TABLE1 AS A1
)
exec sp_dropserver 'srv_lnk0','droplogins'
exec sp_dropserver 'srv_lnk1','droplogins'
exec sp_dropserver 'srv_lnk2','droplogins'
说明:
// 从本地 SQL Server 实例中的已知远程服务器和链接服务器的列表中删除服务器。
// sp_addlinkedserver:创建链接服务器
// srv_lnk0:要创建的链接服务器的名称。
// SQLOLEDB:要添加为链接服务器的 OLE DB 数据源的产品名称。
// sp_addlinkedsrvlogin:创建或更新 SQL Server 本地实例上的登录名与远程服务器中安全帐户之间的映射。
// srv_lnk0:应用登录映射的链接服务器的名称。
// false:确定是否通过模拟本地登录名或显式提交登录名和密码来连接到srv_lnk0。数据类型为 varchar(8),默认值为 TRUE。
// NULL :指定此项应用于连接到 srv_lnk0的所有本地登录。如果不为 NULL,则 locallogin 可以是 SQL Server 登录或 Windows 登录。对于 Windows 登录来说,必须以直接的方式或通过已被授权访问的 Windows 组成员身份授予其访问 SQL Server 的权限。