当前位置:Gxlcms > 数据库问题 > 通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加

通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加

时间:2021-07-01 10:21:17 帮助过:8人阅读

[DBA_Manager] GO /****** Object: StoredProcedure [dbo].[USP_Create_DBLink] Script Date: 2019/7/5 13:52:50 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Carson> -- Create date: <Create Date,2018-06-18,> -- Description: <Description,实现创建DB LinkServer的脚本化,> -- ============================================= CREATE PROCEDURE [dbo].[USP_Create_DBLink] -- Add the parameters for the stored procedure here @ServerIP varchar(20),@SQLUserName varchar(20)=‘‘,@PassW varchar(20)=‘‘,@DelCurLinks varchar(10)=N, @Result nvarchar(3000)=‘‘ output AS BEGIN SET NOCOUNT ON; declare @OriginalSQL nvarchar(3000) declare @sSQL nvarchar(3000) ---------------------------------------------- ---判断指定的ServerIP是否已存在DBLinkServer,结合@DelCurLinks输入参数判断是否删除重建 if @DelCurLinks=Y and exists(select srvname from master.dbo.sysservers where srvname <> SERVERPROPERTY(servername) and srvname=@ServerIP) begin set @sSQL= EXEC master.dbo.sp_dropserver @server=N‘‘‘+@ServerIP+‘‘‘, @droplogins=‘‘droplogins‘‘‘ Print @sSQL exec sp_executesql @sSQL end if not exists(select srvname from master.dbo.sysservers where srvname <> SERVERPROPERTY(servername) and srvname=@ServerIP) or @DelCurLinks=Y begin --create script set @OriginalSQL=/****** Object: LinkedServer [<ServerIP>] ******/ EXEC master.dbo.sp_addlinkedserver @server = N‘‘<ServerIP>‘‘, @srvproduct=N‘‘SQL Server‘‘ /* For security reasons the linked server remote logins password is changed with ######## */ EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N‘‘<ServerIP>‘‘,@useself=N‘‘False‘‘,@locallogin=NULL,@rmtuser=N‘‘<UserName>‘‘,@rmtpassword=‘‘<PWD>‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘collation compatible‘‘, @optvalue=N‘‘true‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘data access‘‘, @optvalue=N‘‘true‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘rpc‘‘, @optvalue=N‘‘true‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘rpc out‘‘, @optvalue=N‘‘true‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘use remote collation‘‘, @optvalue=N‘‘true‘‘ --GO EXEC master.dbo.sp_serveroption @server=N‘‘<ServerIP>‘‘, @optname=N‘‘remote proc transaction promotion‘‘, @optvalue=N‘‘true‘‘ --GO set @sSQL=REPLACE( @OriginalSQL, <ServerIP>,@ServerIP ) set @sSQL=REPLACE( @sSQL, <UserName>,@SQLUserName ) set @sSQL=REPLACE( @sSQL, <PWD>,@PassW ) begin try exec sp_executesql @sSQL print @sSQL print Create Link Server[+ @ServerIP +] successfully! end try begin catch print Create Link Server [+ @ServerIP +] fail! ErrMsg: +ERROR_MESSAGE() end catch end if @DelCurLinks=N and exists(select srvname from master.dbo.sysservers where srvname <> SERVERPROPERTY(servername) and srvname=@ServerIP) begin print Create Link Server [+ @ServerIP +] fail! ErrMsg: Find DBLinkserver of the Same Name ,Please Check it. end END GO

 

3.方法使用

方法 1: 只输入IP、UID、PWD三个参数,@DelCurLinks不显示输入【此时,@DelCurLinks默认为 N,指明当存在相同的LinkServer时,不删除直接退出。】

Exec USP_Create_DBLink 172.XXX.XXX.XXX,UID,PWD

方法 2:输入IP、UID、PWD、DelCurLinks 四个参数,显示指明当存在相同的LinkServer时,不删除直接退出。

Exec USP_Create_DBLink 172.XXX.XXX.XXX,UID,PWD,N

方法 3:输入IP、UID、PWD、DelCurLinks 四个参数,显示指明当存在相同的LinkServer时,删除重新创建

Exec USP_Create_DBLink 172.XXX.XXX.XXX,UID,PWD,Y

 

4. 其它知识

 (1) 查询本SQL Server 已创建的所有实例

select srvname as 链接服务器   from master.dbo.sysservers where srvname <> SERVERPROPERTY(servername)

(2)删除已建立的链接服务器(LinkServer)

EXEC master.dbo.sp_dropserver @server=N172.XXX.XXX.XXX, @droplogins=droplogins

 

通过存储过程(SP)实现SQL Server链接服务器(LinkServer)的添加

标签:The   维护   HERE   code   span   message   入参   rem   where   

人气教程排行