Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Corrigido “O SQL Server bloqueou o acesso ao STATEMENT ‘OpenRowset/OpenDatasource’ do componente ‘Ad Hoc Distributed Queries’


Se você receber a mensagem de erro 15281, nível 16 no SQL Server, é provável que esteja tentando executar uma consulta distribuída ad hoc, mas não habilitou as consultas distribuídas ad hoc.

Isso pode ser corrigido facilmente habilitando consultas distribuídas ad hoc.

Exemplo do erro


Aqui está um exemplo de código que produz o erro.
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 a mensagem de erro indica, um administrador do sistema pode habilitar consultas distribuídas ad hoc usando o sp_configure procedimento armazenado do sistema.

Solução


Execute o código a seguir para corrigir o problema.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE WITH OVERRIDE
GO

A primeira parte habilita as opções avançadas de exibição, que exibem o sp_configure opções avançadas de procedimento armazenado do sistema. Se isso não estiver ativado, você obterá outro erro (provavelmente mensagem de erro 15123), informando que a opção de configuração não existe ou que pode ser uma opção avançada.

A segunda parte usa sp_configure para ativar a opção de consultas distribuídas ad hoc.

Depois de executar esse código, você poderá executar consultas distribuídas ad hoc.

Ocultar opções avançadas


Depois de ativar as consultas distribuídas ad hoc, você provavelmente deve ocultar as opções avançadas de exibição novamente.
EXEC sp_configure 'show advanced options', 0;  
GO
RECONFIGURE;  
GO