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


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

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

Корпорация Майкрософт поддерживает связанные серверы к источникам Excel и Access только при использовании 32-разрядного поставщика Microsoft.JET.OLEDB.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 ID.

Чтобы использовать задания агента 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.
  • Для подключения требуется допустимый сертификат, подписанный ЦС, с соответствием полного доменного имени.
  • 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 Management Studio (SSMS) используйте параметр "Другие источники данных ", чтобы вручную настроить параметры шифрования связанного сервера.

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