Skip to main content
sp_addlinkedserver (Transact-SQL)
 

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008) нетБаза данных SQL Azure нетХранилище данных SQL Azure нетParallel Data Warehouse

Создает связанный сервер. Связанные серверы позволяют выполнять распределенные разнородные запросы к источникам данных OLE DB. После создания связанного сервера с помощью sp_addlinkedserver, распределенные запросы могут выполняться на этом сервере. Если связанный сервер определен в качестве экземпляра SQL Server, на нем могут выполняться удаленные хранимые процедуры.

Topic link icon  Синтаксические обозначения в Transact-SQL

  
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]   
     [ , [ @provider= ] 'provider_name' ]  
     [ , [ @datasrc= ] 'data_source' ]   
     [ , [ @location= ] 'location' ]   
     [ , [ @provstr= ] 'provider_string' ]   
     [ , [ @catalog= ] 'catalog' ]   

[ @server= ] 'server'
Имя создаваемого связанного сервера. Аргументserver имеет тип sysnameи не имеет значения по умолчанию.

[ @srvproduct= ] 'product_name'
Введите название продукта для источника данных OLE DB, который добавляется в качестве связанного сервера. product_namenvarchar (128), значение по умолчанию NULL. Если SQL Server, provider_name, источника_данных, расположение, строка_поставщика, и каталога не должны быть указаны.

[ @provider= ] 'provider_name'
Введите уникальный программный идентификатор (PROGID) поставщика OLE DB, соответствующий этому источнику данных. provider_name должно быть уникальным для указанного поставщика OLE DB, который установлен на данном компьютере. provider_namenvarchar (128), значение по умолчанию NULL; тем не менее, если provider_name — этот параметр опущен, используется значение SQLNCLI. (При использовании SQLNCLI SQL Server будет использовать последнюю версию поставщика OLE DB для собственного клиента SQL Server.) Предполагается, что поставщик OLE DB будет зарегистрирован в реестре с указанным идентификатором PROGID.

[ @datasrc= ] 'data_source'
Имя источника данных, как оно интерпретируется поставщиком OLE DB. источника_данныхnvarchar (4000). источник_данных передается как свойство DBPROP_INIT_DATASOURCE для инициализации поставщика OLE DB.

[ @location= ] 'location'
Введите местонахождение базы данных, понятное поставщику OLE DB. расположениеnvarchar (4000), значение по умолчанию NULL. расположение передается как свойство DBPROP_INIT_LOCATION для инициализации поставщика OLE DB.

[ @provstr= ] 'provider_string'
Строка подключения для конкретного поставщика OLE DB, указывающая уникальный источник данных. provider_stringnvarchar (4000), значение по умолчанию NULL. provstr либо передается IDataInitialize или задается как свойство DBPROP_INIT_PROVIDERSTRING для инициализации поставщика OLE DB.

При создании связанного сервера с SQL Server поставщика OLE DB для собственного клиента может быть указан с помощью ключевого слова SERVER как сервера =имя_сервера\instancename для указания определенного экземпляра SQL Server. имя_сервера — имя компьютера, на котором SQL Server работает, и instancename имя конкретного экземпляра SQL Server , к которой пользователь будет подключен.

System_CAPS_ICON_note.jpg Примечание


Чтобы получить доступ к зеркальной базе данных, строка соединения должна содержать имя базы данных. Это имя необходимо, чтобы предоставить поставщику доступа к данным возможность пытаться отработать отказ. Базы данных могут быть указаны в ** @provstr ** или ** @catalog ** параметр. Кроме того, строка соединения может содержать имя партнера по обеспечению отработки отказа.

[ @catalog= ] 'catalog'
Каталог, который должен использоваться при подключении к поставщику OLE DB. каталогsysname, значение по умолчанию NULL. каталог передается как свойство DBPROP_INIT_CATALOG для инициализации поставщика OLE DB. Если связанный сервер определен для экземпляра SQL Server, то каталог ссылается на базу данных по умолчанию, с которой сопоставлен связанный сервер.

0 (успешное завершение) или 1 (неуспешное завершение)

Нет.

В следующей таблице показаны способы настройки связанного сервера для источников данных, доступных через поставщик OLE DB. Связанный сервер может быть настроен несколькими способами для конкретного источника данных; для одного типа источника данных возможны несколько строк. В этой таблице также показаны sp_addlinkedserver значения параметров, используемые для настройки связанного сервера.

Удаленный источник данных OLE DBПоставщик OLE DBproduct_nameprovider_namedata_sourcelocationprovider_stringcatalog
SQL ServerMicrosoftSQL Server Поставщика OLE DB для собственного клиентаSQL Server1 (по умолчанию)
SQL ServerMicrosoftSQL Server Поставщика OLE DB для собственного клиентаSQLNCLIСетевое имя SQL Server (для экземпляра по умолчанию)Имя базы данных (необязательно)
SQL ServerMicrosoftSQL Server Поставщика OLE DB для собственного клиентаSQLNCLIимя_сервера\instancename (для конкретного экземпляра)Имя базы данных (необязательно)
Oracle, версия 8 или более поздняяПоставщик Oracle для OLE DBЛюбой(Oraoledb.Oracle)Псевдоним для базы данных Oracle
Access/JetПоставщик OLE DB для Jet (Майкрософт)ЛюбойMicrosoft.Jet.OLEDB.4.0Полный путь к файлу базы данных Jet
Источник данных ODBCПоставщик Microsoft OLE DB для ODBCЛюбойMSDASQLСистемный DSN источника данных ODBC
Источник данных ODBCПоставщик Microsoft OLE DB для ODBCЛюбойMSDASQLСтрока подключения ODBC
Файловая системаПоставщик Microsoft OLE DB для службы индексированияЛюбойИМЕНИ_ПОСТАВЩИКАИмя каталога службы индексирования
Электронная таблица Microsoft ExcelПоставщик Microsoft OLE DB для JetЛюбойMicrosoft.Jet.OLEDB.4.0Полный путь к файлу ExcelExcel 5.0
База данных IBM DB2Поставщик Microsoft OLE DB для DB2ЛюбойDB2OLEDBВ разделе Microsoft поставщик OLE DB для DB2 документации.Имя каталога базы данных DB2

1 заставляет этом способе настройки связанного сервера имя связанного сервера совпадает с именем сети удаленного экземпляра SQL Server. Используйте источника_данных для указания сервера.

2 «Любой» указывает, что имя продукта может быть любым.

Microsoft SQL Server Поставщика OLE DB для собственного клиента является поставщиком, который используется с SQL Server Если имя поставщика не указано или если SQL Server указано как имя продукта. Даже если указано имя предыдущего поставщика (SQLOLEDB), оно все равно будет изменено на SQLNCLI при сохранении в каталог.

Источника_данных, расположение, provider_string, и каталога параметры идентификации базы данных или базы данных, указывает связанный сервер. Если значение одного из этих аргументов равно NULL, то соответствующее свойство инициализации поставщика OLE DB не установлено.

В кластеризованной среде при указании имен файлов для указания источников данных OLE DB используйте формат UNC или общие диски для указания расположения.

sp_addlinkedserver не может выполняться внутри пользовательской транзакции.

System_CAPS_ICON_important.jpg Важно


При создании связанного сервера с помощью sp_addlinkedserver, для всех локальных имен входа добавляется Самосопоставление по умолчанию. Поставщики, отличные от SQL Server, для которых выполнена проверка подлинности SQL Server, могут получить доступ к поставщику под учетной записью службы SQL Server. Администраторам нужно рассмотреть применение процедуры sp_droplinkedsrvlogin <linkedserver_name>, NULL для удаления глобального сопоставления.

sp_addlinkedserver Инструкция требует ALTER ANY LINKED SERVER разрешение. (Среда SSMS новый связанный сервер диалоговое окно реализуется в виде, требуется членство в sysadmin фиксированной серверной роли.)

A. Использование поставщика OLE DB для собственного клиента Microsoft SQL Server

В следующем примере показано создание связанного сервера с именем SEATTLESales. Название продукта — SQL Server, имя поставщика не используется.

USE master;  
GO  
EXEC sp_addlinkedserver   
   N'SEATTLESales',  
   N'SQL Server';  
GO  

В следующем примере создается связанный сервер S1_instance1 экземпляра SQL Server с помощью SQL Server поставщика OLE DB для собственного клиента.

EXEC sp_addlinkedserver     
   @server=N'S1_instance1',   
   @srvproduct=N'',  
   @provider=N'SQLNCLI',   
   @datasrc=N'S1\instance1';  

Б. Использование поставщика Microsoft OLE DB для Microsoft Access

Поставщик Microsoft.Jet.OLEDB.4.0 соединяется с базами данных Microsoft Access в формате 2002–2003. В следующем примере показано создание связанного сервера с именем SEATTLE Mktg.

System_CAPS_ICON_note.jpg Примечание


В этом примере предполагается, что оба Microsoft Access и образец Northwind базы данных устанавливаются и что Northwind база данных находится в C:\Msoffice\Access\Samples.

EXEC sp_addlinkedserver   
   @server = N'SEATTLE Mktg',   
   @provider = N'Microsoft.Jet.OLEDB.4.0',   
   @srvproduct = N'OLE DB Provider for Jet',  
   @datasrc = N'C:\MSOffice\Access\Samples\Northwind.mdb';  
GO  

Поставщик Microsoft.ACE.OLEDB.12.0 соединяется с базами данных Microsoft Access в формате 2007. В следующем примере показано создание связанного сервера с именем SEATTLE Mktg.

System_CAPS_ICON_note.jpg Примечание


В этом примере предполагается, что оба Microsoft Access и образец Northwind базы данных устанавливаются и что Northwind база данных находится в C:\Msoffice\Access\Samples.

EXEC sp_addlinkedserver   
   @server = N'SEATTLE Mktg',   
   @provider = N'Microsoft.ACE.OLEDB.12.0',   
   @srvproduct = N'OLE DB Provider for ACE',  
   @datasrc = N'C:\MSOffice\Access\Samples\Northwind.accdb';  
GO  

В. Использование поставщика Microsoft OLE DB для ODBC с аргументом источника данных

В следующем примере создается связанный сервер с именем SEATTLE Payroll , использующий Microsoft поставщик OLE DB для ODBC (MSDASQL) и источника_данных параметр.

System_CAPS_ICON_note.jpg Примечание


Указанный источник данных ODBC должен быть определен как системный DSN на сервере до того, как будет использоваться связанный сервер.

EXEC sp_addlinkedserver   
   @server = N'SEATTLE Payroll',   
   @srvproduct = N'',  
   @provider = N'MSDASQL',   
   @datasrc = N'LocalServer';  
GO  

Г. Использование поставщика Microsoft OLE DB для электронных таблиц Excel

Чтобы создать определение связанного сервера с помощью Microsoft поставщик OLE DB для Jet для доступа к электронной таблицы Excel в формате 1997-2003 сначала создать именованный диапазон в Excel путем указания столбцов и строк, выбираемых в таблице Excel. Затем на имя диапазона можно будет ссылаться в распределенном запросе как на имя таблицы.

EXEC sp_addlinkedserver 'ExcelSource',  
   'Jet 4.0',  
   'Microsoft.Jet.OLEDB.4.0',  
   'c:\MyData\DistExcl.xls',  
   NULL,  
   'Excel 5.0';  
GO  

Для доступа к данным в электронной таблице Excel требуется указать имя для диапазона ячеек. Следующий запрос используется для получения доступа к указанному диапазону ячеек SalesData как к таблице с помощью предварительно настроенного связанного сервера.

SELECT *  
   FROM ExcelSource...SalesData;  
GO  

Если SQL Server выполняется под учетной записью домена, имеющего доступ к удаленной общей папке, то вместо сопоставленного диска может использоваться путь в формате UNC.

EXEC sp_addlinkedserver 'ExcelShare',  
   'Jet 4.0',  
   'Microsoft.Jet.OLEDB.4.0',  
   '\\MyServer\MyShare\Spreadsheets\DistExcl.xls',  
   NULL,  
   'Excel 5.0';  

Чтобы подключиться к электронной таблице Excel в формате Excel 2007, используйте поставщик ACE.

EXEC sp_addlinkedserver @server = N'ExcelDataSource',   
@srvproduct=N'ExcelData', @provider=N'Microsoft.ACE.OLEDB.12.0',   
@datasrc=N'C:\DataFolder\People.xlsx',  
@provstr=N'EXCEL 12.0' ;  
  

Д. Использование поставщика Microsoft OLE DB для Jet для доступа к текстовым файлам

Данный пример показывает, как создать связанный сервер для прямого доступа к текстовым файлам без соединения с ними как с таблицами MDB-файла СУБД Access. Поставщик Microsoft.Jet.OLEDB.4.0 и строка поставщика Text.

Источник данных — это полный путь к каталогу, который содержит тестовые файлы. Файл schema.ini, который описывает структуру текстовых файлов, должен находиться в том же каталоге, что и текстовые файлы. Дополнительные сведения о том, как создать файл Schema.ini, см. в документации по ядру СУБД Jet.

--Create a linked server.  
EXEC sp_addlinkedserver txtsrv, N'Jet 4.0',   
   N'Microsoft.Jet.OLEDB.4.0',  
   N'c:\data\distqry',  
   NULL,  
   N'Text';  
GO  
  
--Set up login mappings.  
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULL;  
GO  
  
--List the tables in the linked server.  
EXEC sp_tables_ex txtsrv;  
GO  
  
--Query one of the tables: file1#txt  
--using a four-part name.   
SELECT *   
FROM txtsrv...[file1#txt];  

Е. Использование поставщика данных Microsoft OLE DB для DB2

В следующем примере показано создание связанного сервера с именем DB2, который использует Microsoft OLE DB Provider for DB2.

EXEC sp_addlinkedserver  
   @server=N'DB2',  
   @srvproduct=N'Microsoft OLE DB Provider for DB2',  
   @catalog=N'DB2',  
   @provider=N'DB2OLEDB',  
   @provstr=N'Initial Catalog=PUBS;  
       Data Source=DB2;  
       HostCCSID=1252;  
       Network Address=XYZ;  
       Network Port=50000;  
       Package Collection=admin;  
       Default Schema=admin;';  

Ж. Добавление База данных SQL Azure как связанный сервер для использования в распределенных запросах на облачных и локальных баз данных

Можно добавить База данных SQL Azure как связанного сервера, а затем использовать ее для распределенных запросов, которые распространяются на локальных и облачных баз данных. Это компонент для гибридных решений баз данных, локальных корпоративных сетях и облаке Windows Azure.

SQL Server Содержит функцию распределенных запросов, которая позволяет разработчикам писать запросы для объединения данных из локальных источников данных и данных из удаленных источников (включая данные из отличныхSQL Server источников данных) определенным как связанные серверы. Каждый База данных SQL Azure (кроме виртуального образца) можно добавить в качестве отдельного связанного сервера и затем использовать как любой другой базы данных непосредственно в приложениях базы данных.

Преимущества использования База данных SQL Azure включают управляемость, высокий уровень доступности, масштабируемость, знакомую модель разработки и реляционную модель данных. Требования приложения базы данных определяют, как оно будет использовать База данных SQL Azure в облаке. Можно переместить все данные одновременно в База данных SQL Azure, либо последовательно перемещать определенные данных, сохраняя оставшихся данных локальной. Для такого гибридного приложения базы данных База данных SQL Azure могут теперь добавляться как связанные серверы и приложения базы данных могут выполнять распределенные запросы для объединения данных из База данных SQL Azure и локальные источники данных.

Ниже приведен простой пример, поясняющий подключение к База данных SQL Azure с помощью распределенных запросов:

------ Configure the linked server  
-- Add one Windows Azure SQL DB as Linked Server  
EXEC sp_addlinkedserver  
@server='myLinkedServer', -- here you can specify the name of the linked server  
@srvproduct='',       
@provider='sqlncli', -- using SQL Server Native Client  
@datasrc='myServer.database.windows.net',   -- add here your server name  
@location='',  
@provstr='',  
@catalog='myDatabase'  -- add here your database name as initial catalog (you cannot connect to the master database)  
-- Add credentials and options to this linked server  
EXEC sp_addlinkedsrvlogin  
@rmtsrvname = 'myLinkedServer',  
@useself = 'false',  
@rmtuser = 'myLogin',             -- add here your login on Azure DB  
@rmtpassword = 'myPassword' -- add here your password on Azure DB  
EXEC sp_serveroption 'myLinkedServer', 'rpc out', true;  
------ Now you can use the linked server to execute 4-part queries  
-- You can create a new table in the Azure DB  
exec ('CREATE TABLE t1tutut2(col1 int not null CONSTRAINT PK_col1 PRIMARY KEY CLUSTERED (col1) )') at myLinkedServer  
-- Insert data from your local SQL Server  
exec ('INSERT INTO t1tutut2 VALUES(1),(2),(3)') at myLinkedServer  
  
-- Query the data using 4-part names  
select * from myLinkedServer.myDatabase.dbo.myTable  

Хранимые процедуры распределенных запросов (Transact-SQL)
sp_addlinkedsrvlogin (Transact-SQL)
sp_addserver (Transact-SQL)
sp_dropserver (Transact-SQL)
sp_serveroption (Transact-SQL)
sp_setnetname (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Системные таблицы (Transact-SQL)