MyTetra Share
Делитесь знаниями!
sp_addlinkedserver (Transact-SQL)
24.12.2018
08:58
Раздел: !Закладки - SQL Server

sp_addlinkedserver (Transact-SQL)

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

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

Синтаксические обозначения в 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_string, и каталога не должны быть указаны.

[ @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= ] "источник_данных"
Имя источника данных, как оно интерпретируется поставщиком OLE DB.
источник_данныхnvarchar ( 4000 ). источник_данных передается как свойство DBPROP_INIT_DATASOURCE для инициализации поставщика OLE DB.

[ @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 в качестве сервера можно задать экземпляра =servername\instancenameдля указания определенного экземпляра SQL Server. ServerName — имя компьютера, на котором SQL Server работает, и instancename имя конкретного экземпляра SQL Server к которой будет подключен пользователь.

Примечание

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

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

Значения кода возврата

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

Результирующие наборы

Нет.

Примечания

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


Удаленный источник данных OLE DB

Поставщик OLE DB

product_name

provider_name

data_source

location

provider_string

catalog

SQL Server

Microsoft SQL Server Поставщик OLE DB для собственного клиента

SQL Server 1 (по умолчанию)

SQL Server

Microsoft SQL Server Поставщик OLE DB для собственного клиента

SQLNCLI

Сетевое имя SQL Server (для экземпляра по умолчанию)

Имя базы данных (необязательно)

SQL Server

Microsoft SQL Server Поставщик OLE DB для собственного клиента

SQLNCLI

ServerName\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 для службы индексирования

Любой

MSIDXS

Имя каталога службы индексирования

Электронная таблица Microsoft Excel

Поставщик Microsoft OLE DB для Jet

Любой

Microsoft.Jet.OLEDB.4.0

Полный путь к файлу Excel

Excel 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 не может выполняться внутри пользовательской транзакции.

Важно!

При создании связанного сервера с помощью 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.

Примечание

В этом примере предполагается, что оба 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.

Примечание

В этом примере предполагается, что оба 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) и источник_данных параметра.

Примечание

Указанный источник данных 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 (за исключением виртуальную базу данных master) можно добавить в качестве отдельного связанного сервера, а затем использовать непосредственно в приложениях базы данных как и любые другие базы данных.

Преимущества использования База данных 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)

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования