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

Применимо к: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 есть некоторые ограничения, которые можно найти здесь.

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

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

  • Возможность доступа к данным извне 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 по умолчанию.

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

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

Diagram showing client tier, server tier, and database server tier

Обычно связанные серверы используются для обработки распределенных запросов. Когда клиентское приложение выполняет распределенный запрос через связанный сервер, 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). Два поддерживаемых режима проверки подлинности Microsoft Entra: управляемое удостоверение и сквозная передача. Проверку подлинности на основе управляемого удостоверения можно использовать для того, чтобы разрешить локальным именам входа выполнять запросы к удаленным связанным серверам. Сквозная проверка подлинности позволяет субъекту, который может пройти проверку подлинности на локальном экземпляре, получить доступ к удаленному экземпляру через связанный сервер. Предварительные требования для сквозной проверки подлинности включают добавление этого субъекта в качестве имени входа на удаленном сервере и добавление обоих экземпляров в группу доверия SQL.

Примечание.

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

Ограничения проверки подлинности Microsoft Entra

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

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

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

См. также

Следующие шаги