标签归档:链接服务器

mssql sqlserver sp_dropserver关键字举例应用


摘要:
下文讲述系统存储过程sp_dropserver关键字的应用说明,如下所示:
实验环境:sql server 2008 R2


sp_dropserver 功能说明:

sp_dropserver 功能从指定sql引擎下删除已知的链接服务器

sp_dropserver 语法说明:

sp_dropserver [ @server = ] 'server'   
     [ , [ @droplogins = ] { 'droplogins' | NULL} ]  

—-参数说明:
@server:
必填参数,待删除链接服务器名称
@droplogins:
缺省值:null
若需删除的服务器中所有远程服务器和链接服务器登录名时删除服务器,请输入此参数”droplogins”


sp_dropserver 运行返回值说明:

返回0代表运行成功
返回1代表运行失败


sp_dropserver 运行注意事项:
1. sp_dropserver 不能在事务中运行
2.运行此系统存储过程,需具有相应的服务器操作权限。



sp_dropserver 举例应用:

   ---删除maomao链接服务器及相关登录名 
   sp_dropserver 'maomao', 'droplogins';

mssql sqlserver sys.sysservers关键字使用简介说明


摘要:
下文讲述sqlserver关键字sys.sysservers功能说明,如下所示:
实验环境:sql server 2008 R2



sys.sysservers 功能说明

sys.sysservers功能主要存储数据库可链接的服务器资源,我们可以通过检索此数据表获取当前服务器下链接服务器的相关信息,如下所示:

  select * from  sys.sysservers


sys.sysservers 数据表返回列说明

返回列名称 数据类型 备注说明
srvid smallint 链接服务器在sql引擎上的编号
srvstatus smallint 链接服务器状态
srvname sysname 链接服务器名称
srvproduct sysname 链接服务器产品名称
providername nvarchar(128) 链接服务器所使用的OLE DB驱动名称
datasource nvarchar(4000) ole db资料来源值
location nvarchar(4000) OLE DB 所处位置
providerstring nvarchar(4000) oledb 链接字符串信息
schemadate datetime 链接服务器更新日期
topologyx int 预留字段
topologyy int 预留字段未使用
catalog sysname ole db链接服务器所处的目录
srvcollation sysname 链接服务器顺序
connecttimeout int 链接服务器连接超时值
querytimeout int 链接服务器查询超时值
srvnetname char(30) 预留字段
isremote bit 此链接服务器是否为远端服务器
rpc bit

设置为true时候,代表开启了RPC

设置为False时,代表未开启RPC

pub bit
sub bit
dist bit
dpub bit
rpcout bit
dataaccess bit
collationcompatible bit
system bit
useremotecollation bit
lazyschemavalidation bit
collation sysname

链接服务器排序方式

nonsqlsub bit

mssql sqlserver 使用自定义存储过程的方式新建linkserver的方法分享


摘要:
下文讲述使用存储过程新建链接服务器的方法,如下所示:
实验环境:sql server 2008 R2


在sqlserver的开发中,我们经常需要跨库进行数据的导出操作,下文讲述通过自定义存储过程新建链接服务器的方法分享,如下:

create  proc  [dbo].[proc_addLinkserver]  
    @lnkServerIP    nvarchar(60),
    @lnkSQLUserName  nvarchar(60)='',
    @lnkPassW nvarchar(80)='' 
AS
BEGIN

SET NOCOUNT ON;

declare @tmpSQL     nvarchar(4000)
declare @replaceSQL nvarchar(4000)

---检测链接服务器是否存在,如果链接服务器存在,则删除此链接服务器
if  exists(select srvname   from master.dbo.sysservers where srvname <> SERVERPROPERTY('servername') and srvname=@lnkServerIP)
begin
      set @replaceSQL =' EXEC master.dbo.sp_dropserver @server=N'''+@ServerIP+''', @droplogins=''droplogins''' 
     exec sp_executesql @replaceSQL 
end

  --生成建立链接服务器的模版sql
  set @tmpSQL ='/****** Object:  LinkedServer [] ******/
              EXEC master.dbo.sp_addlinkedserver @server = N'''', @srvproduct=N''SQL Server''
               /* For security reasons the linked server remote logins password is changed with ######## */
                EXEC master.dbo.sp_addlinkedsrvlogin    @rmtsrvname=N'''',@useself=N''False'',@locallogin=NULL,@rmtuser=N'''',@rmtpassword=''''
                --GO
                EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''collation compatible'', @optvalue=N''true''
                --GO
                EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''data access'', @optvalue=N''true''
                --Go
               EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''rpc'', @optvalue=N''true''
                --GO
                EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''rpc out'', @optvalue=N''true'
                --GO
                EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''use remote collation'', @optvalue=N''true''
                --GO
                EXEC master.dbo.sp_serveroption @server=N'''', @optname=N''remote proc transaction promotion'', @optvalue=N''true''
                --GO'

        

        set  @replaceSQL=REPLACE( @tmpSQL, '',@lnkServerIP )
        set  @replaceSQL=REPLACE(@replaceSQL, '',@lnkSQLUserName )
        set  @replaceSQL=REPLACE(@replaceSQL, '',@lnkPassW )

        begin try
             exec sp_executesql @replaceSQL 
             print @replaceSQL 
        end try

        begin catch
            print '创建链接服务器失败 '      
        end catch
END
GO

--测试脚本,创建链接服务器
exec proc_addLinkserver '链接服务器ip','链接服务器sql账户','链接服务器sql密码'