1. 背景
当系统的微服务化做的不是很高的时候,部分功能要通过DB LinkServer 来实现跨 Server 查询,当然,有时候BI抽数据、DBA数据库维护可能也会创建LinkServer。
特别是当 DB迁移的时候,我们需要检查、创建 DB LinkServer。
2.脚本实现
下面是我们创建的一个存储过程,通过这个存储过程来实现简单、快速的添加链接服务器。
USE [DBA_Manager] GO /****** Object: StoredProcedure [dbo].[USP_Create_DBLink] Script Date: 2019/7/5 13:52:50 ******/ SET ANSI_NULLS ON SET QUOTED_IDENTIFIER GO -- ============================================= -- Author: <Author,Carson> Create date: <Create Date,2018-06-18,> Description: <Description,实现创建DB LinkServer的脚本化,1)"> ============================================= CREATE PROCEDURE dbo].USP_Create_DBLink] Add the parameters for the stored procedure here @ServerIP varchar(20),@sqlUserName 20)='',1)">@PassW @DelCurLinks 10)'N',1)">@Result nvarchar(3000)'' output AS BEGIN SET NOCOUNT ON; declare @Originalsql 3000) @ssql ) -------------------------------------------- -判断指定的ServerIP是否已存在DBLinkServer,结合@DelCurLinks输入参数判断是否删除重建 if @DelCurLinksY' and exists(select srvname from master.dbo.sysservers where srvname <> SERVERPROPERTY(servername') and srvname=@ServerIPbegin set @ssql EXEC master.dbo.sp_dropserver @server=N'''+@ServerIP+''',@droplogins=''droplogins''' Print @ssql exec sp_executesql @ssql end if not @ServerIP) or ' begin create script @Originalsql/****** Object: LinkedServer [<ServerIP>] ******/ EXEC master.dbo.sp_addlinkedserver @server = N<ServerIP>sql Server /* For security reasons the Linked Server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=NFalse<UserName><PWD> --GO EXEC master.dbo.sp_serveroption @server=Ncollation compatibletruedata accessrpcrpc outuse remote collationremote proc transaction promotion --GO ' set REPLACE( @Originalsql, ) @ssql,1)">@sqlUserName@PassW ) begin try @ssql print @ssql print Create Link Server['+ @ServerIP ] successfully!' end try catch Create Link Server [] fail! ErrMsg: ERROR_MESSAGE() catch end ] fail! ErrMsg: Find DBLinkserver of the Same Name,Please Check it.END GO
3.方法使用
方法 1: 只输入IP、UID、PWD三个参数,@DelCurLinks不显示输入【此时,@DelCurLinks默认为 N,指明当存在相同的LinkServer时,不删除直接退出。】
Exec USP_Create_DBLink 172.XXX.XXX.XXXUIDPWD'
方法 2:输入IP、UID、PWD、DelCurLinks 四个参数,显示指明当存在相同的LinkServer时,不删除直接退出。
'
方法 3:输入IP、UID、PWD、DelCurLinks 四个参数,显示指明当存在相同的LinkServer时,删除重新创建
'
4. 其它知识
select srvname as 链接服务器' ')
EXEC master.dbo.sp_dropserver @server=N@droplogins'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。