Cómo habilitar consultas distribuidas ad hoc

105

Cuando ejecuto una consulta OPENROWSETen SQL Server 2000, funciona.

Pero la misma consulta en SQL Server 2008 genera el siguiente error:

SQL Server bloqueó el acceso a STATEMENT 'OpenRowset / OpenDatasource' del componente 'Consultas distribuidas ad hoc' porque este componente está desactivado como parte de la configuración de seguridad de este servidor. Un administrador del sistema puede habilitar el uso de 'Consultas distribuidas ad hoc' mediante sp_configure

codificador de emergencia
fuente
Por cierto, sería mejor que preste atención a la advertencia y cambie su código SQL para usar servidores vinculados en lugar de OPENROWSET.
RBarryYoung
2
@RBarryYoung no es realmente una "advertencia", es solo un aviso que dice que no está habilitado. ¿Cuál es el peligro de habilitar esto?
Conrad
1
si un usuario malintencionado pudo inyectar SQL en algún lugar, activar esta opción podría permitirle sondear los archivos de datos de su elección. Si lo configura como un servidor vinculado, solo se exponen los archivos específicos (servidores vinculados) (y tiene la seguridad de SQL Server integrada que podría estar usando, etc.).
Mike M
pero me gusta esta opción para mis pruebas internas y migración de datos ... por lo tanto, busco cómo usarla nuevamente :)
Mike M

Respuestas:

217

El siguiente comando puede ayudarlo ...

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO
Hasib Hasan Arnab
fuente
14

Puede marcar el siguiente comando

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

O este enlace de documentación

Félix Gagnon-Grenier
fuente
5
necesita agregar un 'IR' después del 1er 'RECONFIGURAR;' de lo contrario, es una solución perfecta
1
¿No necesitas vincular el servidor antes de SELECT?
Sebastien H.
3

Si las actualizaciones ad hoc del catálogo del sistema "no son compatibles", o si recibe un "Msg 5808", deberá configurar con anulación como esta:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE with override
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE with override
GO
Robino
fuente
2
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
user2129794
fuente
No necesitas un GO después de cada línea
Rob