Как включить специальные распределенные запросы


105

Когда я запускаю запрос с OPENROWSET в SQL Server 2000, он работает.

Но тот же запрос в SQL Server 2008 вызывает следующую ошибку:

SQL Server заблокировал доступ к ЗАЯВЛЕНИЮ «OpenRowset / OpenDatasource» компонента «Специальные распределенные запросы», поскольку этот компонент отключен как часть конфигурации безопасности для этого сервера. Системный администратор может включить использование специальных распределенных запросов с помощью процедуры sp_configure.


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

2
@RBarryYoung на самом деле это не "предупреждение" - это просто уведомление о том, что оно не включено. В чем опасность включения этого?
Conrad

1
если злонамеренный пользователь смог куда-то внедрить SQL, включение этой опции может позволить ему исследовать файлы данных по своему выбору. Если вы настроите его как связанный сервер, будут доступны только определенные файлы - связанные серверы (и у вас есть встроенная система безопасности SQL Server, которую вы могли бы использовать, и т. Д.).
Mike M

но мне очень нравится этот вариант для моего внутреннего тестирования и миграции данных ... поэтому ищу, как его снова использовать :)
Майк М.

Ответы:


217

Следующая команда может вам помочь ..

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

14

Вы можете проверить следующую команду

sp_configure 'show advanced options', 1;
RECONFIGURE;
GO  --Added        
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

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

Или эту ссылку на документацию


5
вам нужно добавить «GO» после первого «RECONFIGURE;» в противном случае это идеальное решение

1
разве вам не нужно связывать сервер перед SELECT?
Себастьен Х.

3

Если специальные обновления системного каталога «не поддерживаются» или если вы получаете «Msg 5808», вам необходимо выполнить настройку с переопределением следующим образом:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO

2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO

Вам не нужно GO после каждой строчки
Роб
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.