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


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

Область применения: 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.

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

Ссылки на временные объекты всегда разрешаются на локальный экземпляр tempdb, если применимо, даже с префиксом имени связанного сервера.

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

Связанные серверы с Управляемым экземпляром 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 и выше.

SQL Server 2025 и MSOLEDBSQL версии 19

Начиная с SQL Server 2025 (17.x), поставщик MSOLEDBSQL по умолчанию использует Microsoft OLE DB Driver 19. В этом обновленном драйвере представлены значительные улучшения безопасности, включая поддержку TDS 8.0 и TLS 1.3.

TDS 8.0 повышает безопасность, добавив новый параметр шифрования и введя критическое изменение: Encryption параметр больше не является необязательным. Он должен быть задан в строке подключения при выборе другого экземпляра SQL Server.

Примечание.

Без параметра Encrypt связанные серверы в SQL Server 2025 (17.x) по умолчанию используют Encrypt=Mandatory и требуют действительного сертификата. Подключения без допустимого сертификата завершаются ошибкой.

Параметр Encryption предлагает три отдельных параметра:

  • Yes, или , или TrueMandatory
  • No, или , или FalseOptional
  • Strict

Этот Strict параметр требует использования TDS 8.0 и требует сертификата сервера для безопасных подключений. Для Yes/True/Mandatory, ожидается доверенный сертификат. Самозаверяющий сертификат нельзя использовать.

Версия OLE DB Параметр шифрования Возможные значения Значение по умолчанию
OLE DB 18 Необязательный Trueили , Mandatory или FalseNo No
OLE DB 19 Required Noили , False или YesMandatory( Strict новое) Yes

Параметр TrustServerCertificate поддерживается, но не рекомендуется. Настройка сертификата сервера доверия для Yes отключения проверки сертификата, ослабляя безопасность зашифрованных подключений. Чтобы использовать сертификат сервера доверия , клиент также должен включить его в реестре компьютеров. Сведения о включении сертификата сервера доверия см. в разделе "Параметры реестра". Параметр TrustServerCertificate=Yes не рекомендуется использовать для рабочих сред.

При использовании Encrypt=False или Encrypt=Optional:

  • Сертификат не требуется.
  • Если указан доверенный сертификат, он не проверяется.
  • Не предоставляет никакого шифрования подключений.

При использовании Encrypt=True или Encrypt=Mandatory не использовании TrustServerCertificate=Yes:

  • Требуется действительный подписанный ЦС сертификат.
  • Сертификат должен соответствовать полному домену сервера.
  • Если альтернативное имя в сертификате отличается от имени узла SQL Server, HostNameInCertificate необходимо задать полное доменное имя.
  • Сертификат должен быть установлен в хранилище доверенных корневых центров сертификации на клиентском компьютере.

При использовании Encrypt=Strict:

  • Применяет TDS 8.0.
  • Требуется допустимый подписанный ЦС сертификат с соответствием FQDN.
  • HostNameInCertificate необходимо задать полное доменное имя.
  • Сертификат должен быть доверен клиентской системой.
  • TrustServerCertificate конфигурация не поддерживается. Это означает, что действительный сертификат должен присутствовать.
Параметр «Доверять сертификату сервера» на клиенте Строка соединения или атрибут соединения «Надежный сертификат сервера» Проверка сертификата
0 No (по умолчанию) Да
0 Yes Да
1 No (по умолчанию) Да
1 Yes нет

Эти параметры должны быть правильно указаны в строке подключения при настройке подключений к связанному серверу, чтобы обеспечить совместимость и безопасность с новым драйвером.

Обновление из предыдущих версий OLEDB

Применимо к: SQL Server 2025 (17.x) и более поздних версий

При переходе с предыдущих выпусков SQL Server на SQL Server 2025 (17.x) с Microsoft OLE DB Driver 19, существующие конфигурации связанного сервера могут завершиться ошибкой. Разные значения по умолчанию для параметра шифрования могут привести к сбою, если не указан допустимый сертификат.

Кроме того, можно повторно создать связанный сервер и включить Encrypt=Optional его в строку подключения. Если вы не можете изменить конфигурацию связанного сервера, включите флаг 17600 трассировки для поддержания поведения OLE DB 18 и значений по умолчанию.

В мастере создания связанного сервера SQL Server Managed Studio (SSMS) параметр "Другие источники данных " необходимо использовать для настройки параметров шифрования связанного сервера вручную.

Дополнительные сведения о OLE DB 19, шифровании и проверке сертификатов, включая поведение сертификатов и сертификатов доверия для OLE DB 19, см. в разделе "Шифрование и проверка сертификатов в OLE DB".