sqlserver链接服务器使用方法

时间:2025-02-15 11:18:11

EXEC sp_addlinkedsrvlogin @rmtsrvname = 'serverontest', @useself = 'false', @locallogin = 'sa', @rmtuser = 'sa', @rmtpassword = 'passwordofsa'

添加登录方式

以上两个语句中,@server为服务器的别名,@datasrc为要链接的目标数据库的连接串,@rmtsrvname为别名,@locallogin为本地登录的用户名,@rmtuser和@rmtpassword为要链接的目标数据库的登录用户名和密码

添加完链接服务器之后,可以通过select * from sys.linked_logins 和 select * from 来查看已经添加的链接服务器和登录角色

添加完链接服务器后,使用select * from 别名.库名.dbo.表名 来对其中的数据进行查询

删除链接服务器登录映射和链接服务器的方法:
exec sp_droplinkedsrvlogin 'serverontest' ,'sa' 
exec sp_dropserver 'serverontest'


例子:

EXEC sp_addlinkedserver 'xiaoming','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=172.18.17.65;UID=sa;PWD=vip;'
--建立链接服务器登录映射
exec sp_addlinkedsrvlogin @rmtsrvname='xiaoming',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='vip'
go
--查询数据   
select * from xiaoming.HR_QustionNew.dbo.T_Organise 
--删除链接服务器登录映射和链接服务器:   
exec sp_droplinkedsrvlogin 'xiaoming' ,'sa' 
exec sp_dropserver 'xiaoming'   
注意事项:   
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }   
所以不能通过连接服务器设置此属性   
into 也存在这样的问题   
select * into from   
  

 

 --------修改链接服务的  数据源

/****** 对象:  StoredProcedure [dbo].[UpdateLinkedServer]    脚本日期: 08/29/2011 09:14:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[UpdateLinkedServer] @LinkedServerName nvarchar(50), @SourceServerName nvarchar(50), @LoginName nvarchar(50), @Password nvarchar(50)
AS
BEGIN
 
    EXEC('IF EXISTS (SELECT FROM srv WHERE srv.server_id != 0 AND = N''' + @LinkedServerName + ''') ' +
         'EXEC .sp_dropserver @server=N''' + @LinkedServerName + ''', @droplogins=''droplogins''')
    EXEC('
 EXEC .sp_addlinkedserver @server = N''' + @LinkedServerName + ''', @srvproduct='''', @provider=N''SQLOLEDB'', @datasrc=N''' + @SourceServerName+ ''' ' +
 'EXEC .sp_addlinkedsrvlogin @rmtsrvname=N''' + @LinkedServerName + ''',@useself=N''False'',@locallogin=NULL,@rmtuser=N''' + @LoginName + ''',@rmtpassword=''' + @Password + ''' '
    )
END
-- EXEC 'LINKSERVER_13',IP,'用户名','密码'