sql >> Base de Datos >  >> RDS >> Sqlserver

Reparar "SQL Server bloqueó el acceso a STATEMENT 'OpenRowset/OpenDatasource' del componente 'Ad Hoc Distributed Queries'"

Si recibe el mensaje de error 15281, nivel 16 en SQL Server, es probable que esté intentando ejecutar una consulta distribuida ad hoc, pero no ha habilitado las consultas distribuidas ad hoc.

Esto se puede solucionar fácilmente habilitando consultas distribuidas ad hoc.

Ejemplo del error

Aquí hay un ejemplo de código que produce el error.

SELECT * FROM OPENROWSET(
    'SQLNCLI', 
    'Server=Homer;Trusted_Connection=yes;', 
    'SELECT * FROM Music.dbo.vAlbums');

Resultado:

Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', search for 'Ad Hoc Distributed Queries' in SQL Server Books Online.

Como indica el mensaje de error, un administrador del sistema puede habilitar consultas distribuidas ad hoc mediante el sp_configure procedimiento almacenado del sistema.

Solución

Ejecute el siguiente código para solucionar el problema.

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

La primera parte permite mostrar opciones avanzadas, que muestra el sp_configure Opciones avanzadas del procedimiento almacenado del sistema. Si esto no está habilitado, obtendrá otro error (probablemente el mensaje de error 15123), que indica que la opción de configuración no existe o que puede ser una opción avanzada.

La segunda parte usa sp_configure para habilitar la opción de consultas distribuidas ad hoc.

Una vez que haya ejecutado ese código, debería poder ejecutar consultas distribuidas ad hoc.

Ocultar opciones avanzadas

Una vez que haya habilitado las consultas distribuidas ad hoc, probablemente debería volver a ocultar las opciones avanzadas de visualización.

EXEC sp_configure 'show advanced options', 0;  
GO
RECONFIGURE;  
GO