Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fix „SQL Server blockiert Zugriff auf STATEMENT ‚OpenRowset/OpenDatasource‘ der Komponente ‚Ad Hoc Distributed Queries‘

Wenn Sie die Fehlermeldung 15281, Ebene 16 in SQL Server erhalten, versuchen Sie möglicherweise, eine verteilte Ad-hoc-Abfrage auszuführen, aber Sie haben verteilte Ad-hoc-Abfragen nicht aktiviert.

Dies kann leicht behoben werden, indem verteilte Ad-hoc-Abfragen aktiviert werden.

Beispiel für den Fehler

Hier ist ein Codebeispiel, das den Fehler erzeugt.

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

Ergebnis:

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.

Wie die Fehlermeldung besagt, kann ein Systemadministrator verteilte Ad-hoc-Abfragen aktivieren, indem er sp_configure verwendet gespeicherte Systemprozedur.

Lösung

Führen Sie den folgenden Code aus, um das Problem zu beheben.

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

Der erste Teil aktiviert die erweiterten Optionen anzeigen, die sp_configure anzeigen erweiterte Optionen für gespeicherte Systemprozeduren. Wenn dies nicht aktiviert ist, erhalten Sie einen weiteren Fehler (wahrscheinlich Fehlernachricht 15123), der besagt, dass die Konfigurationsoption entweder nicht vorhanden ist oder dass es sich möglicherweise um eine erweiterte Option handelt.

Der zweite Teil verwendet sp_configure , um die Option für verteilte Ad-hoc-Abfragen zu aktivieren.

Nachdem Sie diesen Code ausgeführt haben, sollten Sie in der Lage sein, verteilte Ad-hoc-Abfragen auszuführen.

Erweiterte Optionen ausblenden

Sobald Sie verteilte Ad-hoc-Abfragen aktiviert haben, sollten Sie wahrscheinlich die erweiterten Optionen anzeigen wieder ausblenden.

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