Настройка разрешений на доступ к удаленным данным из источника данных OLEDB в SQL Server

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

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 327489

Сводка

Операторы или OPENDATASOURCE в SQL Server можно использовать OPENROWSET в качестве нерегламентированного метода для подключения к данным удаленного поставщика OLEDB и доступа к ним, включая удаленный экземпляр SQL Server. Эти инструкции можно использовать для доступа к удаленным данным из источников данных OLE DB только в том случае, если для параметра реестра DisallowAdhocAccess явно задано значение 0 для указанного поставщика, а параметр расширенной конфигурации Ad Hoc Distributed Queries включен. Если эти параметры не заданы, поведение по умолчанию не разрешает нерегламентированный доступ.

В этой статье содержатся дополнительные сведения о настройке DisallowAdhocAccess с помощью SQL Server Management Studio и параметров реестра, а также о поведении по умолчанию.

Отключение нерегламентированного доступа с помощью SQL Server Management Studio

DisallowAdHocAccess Укажите свойство поставщика в SQL Server Management Studio (SSMS)

  1. Откройте SSMS и разверните узел Поставщики в разделе Связанные серверы.

  2. Щелкните, чтобы выбрать поставщика OLE DB, который вы хотите использовать, а затем нажмите кнопку Параметры поставщика .

  3. Прокрутите вниз, установите флажок Запретить доступ к свойству adhoc и нажмите кнопку ОК.

Отключение нерегламентированного доступа с помощью редактора реестра

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.

После сохранения DisallowAdHocAccess связанного сервера свойство можно задать только с помощью параметра реестра.

Добавьте значение DisallowAdHocAccess.

Чтобы добавить DisallowAdHocAccess значение, выполните следующие действия.

  1. Откройте редактор реестра.

  2. Найдите и выберите раздел в реестре :HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>

    Пример. Если вы пытаетесь изменить это значение для поставщика Microsoft OLEDB для драйверов ODBC, ключ будет следующим:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. В меню Правка выберите Добавить значение, а затем добавьте следующее значение реестра:

    Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
    
  4. Закройте редактор реестра.

Включение нерегламентированного удаленного доступа

Убедившись, что параметр расширенной конфигурации Ad Hoc Distributed Queries включен, необходимо задать для параметра реестра DisallowAdhocAccessзначение 0 для указанного поставщика.

Чтобы изменить существующее DisallowAdHocAccess значение, выполните следующие действия.

  1. Откройте редактор реестра.

  2. Найдите и выберите DisallowAdHocAccess значение в разделе реестра :HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>.

    Пример: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0

  3. В меню Правка выберите DWORD, введите 1 и нажмите кнопку ОК.

  4. Закройте редактор реестра. Для именованного экземпляра раздел реестра отличается: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>

Требование перезапуска

Изменение значения DisallowAdHocAccess с 1 на 0 не потребует перезапуска службы SQL, в то время как для изменения с 0 на 1 потребуется перезапуск службы SQL, чтобы изменения вступили в силу.

Заданное по умолчанию поведение

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

Примечание.

Если задано значение по умолчанию, при попытке вызвать эти функции в нерегламентированных запросах появляется сообщение об ошибке, похожее на следующее сообщение: Сервер: Msg 7415, Level 16, State 1, Line 1 Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' отклонен. Доступ к этому поставщику необходимо получить через связанный сервер.

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

См. также