sql >> Databasteknik >  >> RDS >> Sqlserver

Åtgärda "SQL-server blockerade åtkomst till STATEMENT "OpenRowset/OpenDatasource" för komponenten "Ad Hoc Distributed Queries"

Om du får felmeddelande 15281, nivå 16 i SQL Server, är chansen stor att du försöker köra en ad hoc-distribuerad fråga, men du har inte aktiverat ad hoc-distribuerade frågor.

Detta kan enkelt fixas genom att aktivera ad hoc-distribuerade frågor.

Exempel på felet

Här är ett exempel på kod som skapar felet.

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

Resultat:

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.

Som felmeddelandet anger kan en systemadministratör aktivera ad hoc-distribuerade frågor genom att använda sp_configure systemlagrad procedur.

Lösning

Kör följande kod för att åtgärda problemet.

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

Den första delen aktiverar visa avancerade alternativ, som visar sp_configure system lagrad procedur avancerade alternativ. Om detta inte är aktiverat får du ett annat felmeddelande (troligen felmeddelande 15123), som säger att konfigurationsalternativet antingen inte finns eller att det kan vara ett avancerat alternativ.

Den andra delen använder sp_configure för att aktivera alternativet för ad hoc-distribuerade frågor.

När du har kört den koden bör du kunna köra ad hoc-distribuerade frågor.

Dölj avancerade alternativ

När du har aktiverat ad hoc-distribuerade frågor bör du förmodligen dölja de avancerade alternativen igen.

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

  1. SQL Server - brist på NATURAL JOIN / x JOIN y USING(fält)

  2. Så här kontrollerar du om en tabell redan finns innan du skapar den i MySQL

  3. Hur bestämmer jag den sista dagen i föregående månad med PostgreSQL?

  4. MySQL – Återställ databas för tappad prestandaschema