Поделиться через


Связанные серверы (ядро СУБД)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Связанные серверы позволяют SQL Server ядро СУБД и Управляемый экземпляр SQL Azure считывать данные из удаленных источников данных и выполнять команды на удаленных серверах баз данных (например, источниках данных OLE DB) за пределами экземпляра SQL Server. Как правило, связанные серверы настроены для включения ядро СУБД для выполнения инструкции Transact-SQL, которая включает таблицы в другом экземпляре SQL Server или другой продукт базы данных, например Oracle. Многие типы источников данных OLE DB можно настроить как связанные серверы, включая сторонних поставщиков баз данных и Azure Cosmos DB.

Примечание.

Связанные серверы доступны в SQL Server и Управляемый экземпляр SQL Azure (с некоторыми ограничениями). Связанные серверы недоступны в База данных SQL Azure.

В каких случаях следует использовать связанные серверы?

Связанные серверы позволяют реализовать распределенные базы данных, которые могут извлекать и обновлять данные в других базах данных. Они являются прекрасным решением в сценариях, где необходимо реализовать сегментирование баз данных без необходимости создания кода пользовательского приложения или прямой загрузки из удаленных источников данных. Концепция связанных серверов имеет следующие преимущества.

  • Возможность доступа к данным извне SQL Server.

  • Возможность осуществлять распределенные запросы, обновления, команды и транзакции на разнородных источниках данных по всему предприятию.

  • Возможность единообразной адресации разных источников данных.

Связанный сервер можно настроить с помощью SQL Server Management Studio или с помощью инструкции sp_addlinkedserver (Transact-SQL). Поставщики OLE DB существенно различаются по типу и количеству необходимых параметров. Например, некоторые поставщики требуют предоставления контекста безопасности для подключения с помощью sp_addlinkedsrvlogin (Transact-SQL). Некоторые поставщики OLE DB позволяют SQL Server обновлять данные в источнике OLE DB. Другие предоставляют доступ к данным только для чтения. Для информации о каждом поставщике OLE DB обратитесь к документации об этом поставщике OLE DB.

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

Определение связанного сервера задает следующие объекты.

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

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

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

Начиная с SQL Server 2019 (15.x), драйвер Microsoft OLE DB для SQL Server (MSOLEDBSQL) (PROGID: MSOLEDBSQL) является поставщиком OLE DB по умолчанию. В более ранних версиях поставщик OLE DB собственного клиента SQL Server (SQLNCLI) (PROGID: SQLNCLI11) был поставщиком OLE DB по умолчанию.

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .

Связанные серверы с источниками Microsoft Access и Excel поддерживаются только корпорацией Майкрософт при использовании 32-разрядного поставщика OLEDB.Microsoft.JET.4.0 OLE DB.

Примечание.

Распределенные запросы SQL Server предназначены для работы с любым поставщиком OLE DB, реализующим необходимые интерфейсы OLE DB. Однако SQL Server был протестирован с поставщиком OLE DB по умолчанию.

Сведения о настройке связанных серверов

На следующей иллюстрации показаны основы настройки связанных серверов.

Схема: уровень клиента, уровень сервера и уровень сервера баз данных

Обычно связанные серверы используются для обработки распределенных запросов. Когда клиентское приложение выполняет распределенный запрос через связанный сервер, SQL Server анализирует команду и отправляет запросы в OLE DB. Запрос на набор строк может быть в форме выполнения запроса к поставщику или в форме открытия базовой таблицы из поставщика.

Примечание.

Чтобы источник данных возвращал данные через связанный сервер, поставщик OLE DB (DLL) для этого источника данных должен присутствовать на том же сервере, что и экземпляр SQL Server.

Внимание

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

Примечание.

Связанные серверы поддерживают сквозную проверку подлинности Active Directory при использовании полного делегирования. Начиная с SQL Server 2017 (14.x) CU17, сквозная проверка подлинности с ограниченным делегированием также поддерживается; Однако ограниченное делегирование на основе ресурсов не поддерживается.

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

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

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

При настройке связанного сервера зарегистрируйте сведения о подключении и сведения о источнике данных в SQL Server. После регистрации к этому источнику данных можно обращаться по одному логическому имени.

Для управления определениями связанного сервера можно использовать хранимые процедуры и представления каталога.

  • Создайте определение связанного сервера, выполнив процедуру sp_addlinkedserver.

  • Просмотрите сведения о связанных серверах, определенных в определенном экземпляре SQL Server, выполнив запрос к sys.servers представлению системного каталога.

  • Удалите определение связанного сервера, выполнив процедуру sp_dropserver. Эта хранимая процедура может также использоваться для удаления удаленного сервера.

Вы также можете определить связанные серверы с помощью SQL Server Management Studio. В обозревателе объектов щелкните правой кнопкой мыши Объекты сервера, выберите Создатьи выберите Связанный сервер. Определение связанного сервера можно удалить, щелкнув правой кнопкой мыши имя связанного сервера и выбрав Удалить.

При выполнении распределенного запроса к связанному серверу необходимо указать полное, состоящее из четырех частей имя таблицы для каждого источника данных, к которому выполняется запрос. Это четырехкомпонентное имя должно быть в форме linked_server_name.catalog.схема.имя_объекта.

Примечание.

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

Связанные серверы с Управляемым экземпляром SQL Azure

Управляемый экземпляр SQL Azure связанные серверы поддерживают проверку подлинности SQL и проверку подлинности с помощью идентификатора Microsoft Entra (ранее — Azure Active Directory).

Чтобы использовать задания агента SQL в Управляемый экземпляр SQL Azure для запроса удаленного сервера через связанный сервер, используйте sp_addlinkedsrvlogin для создания сопоставления с именем входа на локальном сервере с именем входа на удаленном сервере. Когда задание агента SQL подключается к удаленному серверу через связанный сервер, он выполняет запрос T-SQL в контексте удаленного входа. Дополнительные сведения см. в заданиях агента SQL с Управляемый экземпляр SQL Azure.

Проверка подлинности Microsoft Entra

Два поддерживаемых режима проверки подлинности Microsoft Entra: управляемое удостоверение и сквозная передача. Проверку подлинности на основе управляемого удостоверения можно использовать для того, чтобы разрешить локальным именам входа выполнять запросы к удаленным связанным серверам. Сквозная проверка подлинности позволяет субъекту, который может пройти проверку подлинности с помощью локального экземпляра для доступа к удаленному экземпляру через связанный сервер.

Чтобы использовать сквозную проверку подлинности Microsoft Entra для связанного сервера в Управляемый экземпляр SQL Azure, необходимо выполнить следующие предварительные требования:

  • Тот же субъект добавляется в качестве имени входа на удаленном сервере.
  • Оба экземпляра являются членами группы доверия SQL.

Примечание.

Существующие определения связанных серверов, настроенных для сквозного режима, поддерживают проверку подлинности Microsoft Entra. Единственное требование для этого — добавить Управляемый экземпляр SQL в группу доверия сервера.

Следующие ограничения применяются к проверке подлинности Microsoft Entra для связанных серверов в Управляемый экземпляр SQL Azure:

  • Проверка подлинности Microsoft Entra не поддерживается для управляемых экземпляров SQL в разных клиентах Microsoft Entra.
  • Проверка подлинности Microsoft Entra для связанных серверов поддерживается только с драйвером OLE DB версии 18.2.1 и выше.
  • Проверка подлинности Microsoft Entra для связанных серверов из Управляемый экземпляр SQL в SQL Server поддерживается только для сопоставленных локальных имен входа. Распространение контекста безопасности не поддерживается. Это означает, что проверка подлинности с помощью управляемого удостоверения поддерживается, а сквозная проверка подлинности не поддерживается.

MSOLEDBSQL19 и связанные серверы

В настоящее время MSOLEDBSQL19 предотвращает создание связанных серверов без шифрования и доверенного сертификата (самозаверяющий сертификат недостаточно). Если необходимы связанные серверы, используйте существующую поддерживаемую версию MSOLEDBSQL.