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

Область применения: 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 . Поставщики OLE DB существенно различаются по типу и количеству необходимых параметров. Например, некоторые поставщики требуют предоставления контекста безопасности для подключения с помощью sp_addlinkedsrvlogin. Некоторые поставщики 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 (PROGID: MSOLEDBSQL) является поставщиком OLE DB по умолчанию. В более ранних версиях собственный клиент SQL Server (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 и выше.

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

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