Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Correzione "SQL Server ha bloccato l'accesso a STATEMENT" OpenRowset/OpenDatasource" del componente "Query distribuite ad hoc"

Se ricevi il messaggio di errore 15281, livello 16 in SQL Server, è probabile che tu stia tentando di eseguire una query distribuita ad hoc, ma non hai abilitato query distribuite ad hoc.

Questo problema può essere risolto facilmente abilitando query distribuite ad hoc.

Esempio di errore

Ecco un esempio di codice che produce l'errore.

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

Risultato:

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.

Come indica il messaggio di errore, un amministratore di sistema può abilitare query distribuite ad hoc utilizzando sp_configure procedura memorizzata di sistema.

Soluzione

Esegui il codice seguente per risolvere il 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 prima parte abilita la mostra opzioni avanzate, che mostra il sp_configure opzioni avanzate della procedura memorizzata di sistema. Se questo non è abilitato, otterresti un altro errore (probabilmente messaggio di errore 15123), in cui si afferma che l'opzione di configurazione non esiste o che potrebbe essere un'opzione avanzata.

La seconda parte usa sp_configure per abilitare l'opzione query distribuite ad hoc.

Una volta eseguito il codice, dovresti essere in grado di eseguire query distribuite ad hoc.

Nascondi opzioni avanzate

Dopo aver abilitato le query distribuite ad hoc, dovresti probabilmente nascondere di nuovo le opzioni avanzate di visualizzazione.

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