Конфигурация сервера: нерегламентированные распределенные запросы

Область применения: SQL Server

По умолчанию SQL Server не разрешает использование и нерегламентированные OPENROWSET OPENDATASOURCEраспределенные запросы. Если этот параметр задан 1, SQL Server разрешает специальный доступ. Если этот параметр не задан или задан в значение 0, SQL Server не разрешает нерегламентированный доступ.

Нерегламентированные распределенные запросы подключаются к удаленным источникам данных, использующим OLE DB, с помощью функций OPENROWSET и OPENDATASOURCE. OPENROWSET и OPENDATASOURCE следует использовать только для ссылки на источники данных OLE DB, к которым часто обращаются. Для всех источников данных, к которым обращается более нескольких раз, определите связанный сервер.

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

Замечания

Если вы пытаетесь сделать нерегламентированное подключение с Ad Hoc Distributed Queries отключенным, вы увидите следующую ошибку:

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.

База данных SQL Azure и Управляемый экземпляр SQL Azure

Подробнее см. статью Сравнение функций: База данных SQL Azure и Управляемый экземпляр SQL Azure.

Примеры

Следующий пример включает и запрашивает Ad Hoc Distributed Queries сервер с именем Seattle1 с помощью OPENROWSET функции.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO

RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2022.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO