A linked server allows for access to distributed, heterogeneous queries against OLE DB data sources. After a linked server is created by using sp_addlinkedserver, distributed queries can be run against this server. If the linked server is defined as an instance of SQL Server, remote stored procedures can be executed.
1,添加Linked Server
使用 sys.sp_addlinkedserver 添加Linked Server,除了必须在本地自定义一个Linked Server的Alias,还必须指定 Linked Server的Product name,Provider name,Data Source, location, provider string 和 catalog 参数。
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ] [ , [ @location= ] 'location' ] [ , [ @provstr= ] 'provider_string' ] [ , [ @catalog= ] 'catalog' ]
Arguments
Provider 需要安装,可以从SQL Server 的Linked Servers Catalog下查看已经安装的Providers。
添加SQL Server 作为Linked Server,将@srvproduct 设置为 N'' 字符。
--add linked server exec sys.sp_addlinkedserver @server= N'RemoteServerAlias'
,@srvproduct= N'' ,@provider= N'SQLNCLI' ,@datasrc= N'RemoteServerName\SQLServerInstanceName' ,@location= null ,@provstr= null ,@catalog= N'Remote_DB_Name'
2,使用 sys.servers 查看添加的Linked Server
sys.servers Contains a row per linked or remote server registered, and a row for the local server that has server_id = 0.
When you create a linked or remote server, SQL Server creates a default login mapping to the public server role. This means that by default, all logins can view all linked and remote servers. To restrict visibility to these servers, remove the default login mapping by executing sp_droplinkedsrvlogin and specifying NULL for the locallogin parameter.
select * from sys.servers where name=N'ExcelDataSource'
3,使用 sys.sp_dropserver 删除Linked Server
Syntax
sp_dropserver [ @server = ] 'server' [ , [ @droplogins = ] { 'droplogins' | NULL} ]
[ @droplogins = ] 'droplogins' | NULL
Indicates that related remote and linked server logins for server must also be removed if droplogins is specified. @droplogins is char(10), with a default of NULL.
在删除Linked Server时,将login一起删除。
EXEC sys.sp_dropserver @server=N'ExcelDataSource', @droplogins='droplogins' GO
参考doc:
MSDN:sp_addlinkedserver (Transact-SQL)