Связанные серверы (компонент Database Engine)Linked Servers (Database Engine)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Настройте связанный сервер, чтобы включить Компонент SQL Server Database EngineSQL Server Database Engine для выполнения команд в источниках данных OLE DB вне экземпляра SQL ServerSQL Server.Configure a linked server to enable the Компонент SQL Server Database EngineSQL Server Database Engine to execute commands against OLE DB data sources outside of the instance of SQL ServerSQL Server. Обычно связанные серверы настроены на включение компонента Компонент Database EngineDatabase Engine для выполнения инструкции Transact-SQLTransact-SQL , включающей таблицы в другом экземпляре SQL ServerSQL Serverили другом продукте для работы с базами данных, например Oracle.Typically linked servers are configured to enable the Компонент Database EngineDatabase Engine to execute a Transact-SQLTransact-SQL statement that includes tables in another instance of SQL ServerSQL Server, or another database product such as Oracle. В качестве связанных серверов можно настроить источники данных OLE DB многих типов, в том числе MicrosoftMicrosoft Access и Excel.Many types OLE DB data sources can be configured as linked servers, including MicrosoftMicrosoft Access and Excel. Концепция связанных серверов имеет следующие преимущества.Linked servers offer the following advantages:

  • Возможность доступа к данным за пределами SQL ServerSQL Server.The ability to access data from outside of SQL ServerSQL Server.

  • Возможность осуществлять распределенные запросы, обновления, команды и транзакции на разнородных источниках данных по всему предприятию.The ability to issue distributed queries, updates, commands, and transactions on heterogeneous data sources across the enterprise.

  • Возможность единообразной адресации разных источников данных.The ability to address diverse data sources similarly.

Можно настроить связанный сервер, используя инструкцию Среда SQL Server Management StudioSQL Server Management Studio или sp_addlinkedserver (Transact-SQL) .You can configure a linked server by using Среда SQL Server Management StudioSQL Server Management Studio or by using the sp_addlinkedserver (Transact-SQL) statement. Поставщики OLE DB существенно различаются по типу и количеству необходимых параметров.OLE DB providers vary greatly in the type and number of parameters required. Например, некоторые поставщики требуют предоставления контекста безопасности для соединения с помощью sp_addlinkedsrvlogin (Transact-SQL).For example some providers require you to provide a security context for the connection using sp_addlinkedsrvlogin (Transact-SQL). Некоторые поставщики OLE DB разрешают использовать SQL ServerSQL Server для обновления данных в источнике данных OLE DB.Some OLE DB providers allow SQL ServerSQL Server to update data on the OLE DB source. Другие предоставляют доступ к данным только для чтения.Others provide only read-only data access. Для информации о каждом поставщике OLE DB обратитесь к документации об этом поставщике OLE DB.For information about each OLE DB provider, consult documentation for that OLE DB provider.

Компоненты связанных серверовLinked Server Components

Определение связанного сервера задает следующие объекты.A linked server definition specifies the following objects:

  • Поставщик OLE DBAn OLE DB provider

  • Источник данных OLE DBAn OLE DB data source

Поставщиком OLE DB является динамическая библиотека, осуществляющая управление и взаимодействие с определенными источниками данных.An OLE DB provider is a DLL that manages and interacts with a specific data source. Источник данных OLE DB определяет конкретную базу данных, доступ к которой выполняется через интерфейс OLE DB.An OLE DB data source identifies the specific database that can be accessed through OLE DB. Хотя источники данных, запросы к которым выполняются с помощью определений связанных серверов, являются обычными базами данных, существуют поставщики OLE DB для разнообразных файлов и форматов файлов.Although data sources queried through linked server definitions are ordinarily databases, OLE DB providers exist for a variety of files and file formats. Сюда входят текстовые файлы, данные электронных таблиц и результаты поиска полнотекстового содержимого.These include text files, spreadsheet data, and the results of full-text content searches.

Поставщик OLE DB MicrosoftMicrosoft SQL ServerSQL Server Native Client (PROGID: SQLNCLI11) является официальным поставщиком OLE DB для SQL ServerSQL Server.The MicrosoftMicrosoft SQL ServerSQL Server Native Client OLE DB Provider (PROGID: SQLNCLI11) is the official OLE DB provider for SQL ServerSQL Server.

Примечание

SQL ServerSQL Server предназначены для работы с поставщиком OLE DB, реализующим необходимые интерфейсы OLE DB.distributed queries are designed to work with any OLE DB provider that implements the required OLE DB interfaces. Однако работа SQL ServerSQL Server проверялась только с поставщиком Native Client OLE DB SQL ServerSQL Server и некоторыми другими поставщиками.However, SQL ServerSQL Server has been tested against only the SQL ServerSQL Server Native Client OLE DB Provider and certain other providers.

Подробности настройки связанных серверовLinked Server Details

На следующей иллюстрации показаны основы настройки связанных серверов.The following illustration shows the basics of a linked server configuration.

Уровень клиента, уровень сервера и уровень сервера баз данныхClient tier, server tier, and database server tier

Обычно связанные серверы используются для обработки распределенных запросов.Typically, linked servers are used to handle distributed queries. Если клиентское приложение выполняет распределенный запрос через связанный сервер, SQL ServerSQL Server проводит синтаксический анализ команды и передает запросы поставщику OLE DB.When a client application executes a distributed query through a linked server, SQL ServerSQL Server parses the command and sends requests to OLE DB. Запрос на набор строк может быть в форме выполнения запроса к поставщику или в форме открытия базовой таблицы из поставщика.The rowset request may be in the form of executing a query against the provider or opening a base table from the provider.

Примечание

Чтобы источник данных мог вернуть данные при помощи связанного сервера, поставщик OLE DB (динамическая библиотека) для этого источника данных должен присутствовать на том же сервере, что и экземпляр SQL ServerSQL Server.For a data source to return data through a linked server, the OLE DB provider (DLL) for that data source must be present on the same server as the instance of SQL ServerSQL Server.

Важно!

При использовании поставщика OLE DB учетная запись, под которой выполняется служба сервера SQL ServerSQL Server, должна иметь разрешения на чтение и выполнение для каталога и всех его подкаталогов, в котором установлен поставщик.When an OLE DB provider is used, the account under which the SQL ServerSQL Server service runs must have read and execute permissions for the directory, and all subdirectories, in which the provider is installed. Сюда входят поставщик, выпущенный корпорацией Майкрософт, и любые сторонние поставщики.This includes Microsoft released provider, and any thirtd-party providers.

Управление поставщикамиManaging Providers

Имеется набор параметров, определяющих, как SQL ServerSQL Server загружает и использует поставщики OLE DB, заданные в реестре.There is a set of options that control how SQL ServerSQL Server loads and uses OLE DB providers that are specified in the registry.

Управление определениями связанных серверовManaging Linked Server Definitions

При установке связанного сервера зарегистрируйте параметры соединения и источника данных при помощи SQL ServerSQL Server.When you are setting up a linked server, register the connection information and data source information with SQL ServerSQL Server. После регистрации к этому источнику данных можно обращаться по одному логическому имени.After registered, that data source can be referred to with a single logical name.

Для управления определениями связанного сервера можно использовать хранимые процедуры и представления каталога.You can use stored procedures and catalog views to manage linked server definitions:

  • Создайте определение связанного сервера, выполнив процедуру sp_addlinkedserver.Create a linked server definition by running sp_addlinkedserver.

  • Просмотрите сведения о связанных серверах, определенных в конкретном экземпляре SQL ServerSQL Server , выполнив запрос к представлениям системного каталога sys.servers .View information about the linked servers defined in a specific instance of SQL ServerSQL Server by running a query against the sys.servers system catalog views.

  • Удалите определение связанного сервера, выполнив процедуру sp_dropserver.Delete a linked server definition by running sp_dropserver. Эта хранимая процедура может также использоваться для удаления удаленного сервера.You can also use this stored procedure to remove a remote server.

Определять связанные серверы можно также в среде Среда SQL Server Management StudioSQL Server Management Studio.You can also define linked servers by using Среда SQL Server Management StudioSQL Server Management Studio. В обозревателе объектов щелкните правой кнопкой мыши Объекты сервера, выберите Создатьи выберите Связанный сервер.In the Object Explorer, right-click Server Objects, select New, and select Linked Server. Определение связанного сервера можно удалить, щелкнув правой кнопкой мыши имя связанного сервера и выбрав Удалить.You can delete a linked server definition by right-clicking the linked server name and selecting Delete.

При выполнении распределенного запроса к связанному серверу необходимо указать полное, состоящее из четырех частей имя таблицы для каждого источника данных, к которому выполняется запрос.When you execute a distributed query against a linked server, include a fully qualified, four-part table name for each data source to query. Это четырехкомпонентное имя должно быть в форме linked_server_name.catalog.schema.object_name.This four-part name should be in the form linked_server_name.catalog.schema.object_name.

Примечание

Связанные серверы могут быть определены таким образом, чтобы указывать на сервер, на котором они определены (обратная связь).Linked servers can be defined to point back (loop back) to the server on which they are defined. Серверы с обратной связью наиболее полезны для тестирования приложения, в котором используются распределенные запросы в односерверной сети.Loopback servers are most useful when testing an application that uses distributed queries on a single server network. Серверы, связанные с помощью петлевого адреса, предназначены для тестирования и не поддерживаются во многих операциях, таких как распределенные транзакции.Loopback linked servers are intended for testing and are not supported for many operations, such as distributed transactions.

Создание связанных серверов (компонент SQL Server Database Engine)Create Linked Servers (SQL Server Database Engine)

sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)sp_dropserver (Transact-SQL)

sys.servers (Transact-SQL)sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)sp_linkedservers (Transact-SQL)