sql >> Database >  >> RDS >> Sqlserver

Fix “SQL Server blokkeerde toegang tot VERKLARING ‘OpenRowset/OpenDatasource’ van component ‘Ad Hoc Distributed Queries’

Als u de foutmelding Msg 15281, niveau 16 in SQL Server krijgt, is de kans groot dat u een ad-hoc gedistribueerde query probeert uit te voeren, maar dat u ad-hoc gedistribueerde query's niet hebt ingeschakeld.

Dit kan eenvoudig worden opgelost door ad-hoc gedistribueerde zoekopdrachten in te schakelen.

Voorbeeld van de fout

Hier is een voorbeeld van code die de fout veroorzaakt.

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

Resultaat:

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.

Zoals de foutmelding aangeeft, kan een systeembeheerder ad-hoc gedistribueerde zoekopdrachten inschakelen met behulp van de sp_configure systeem opgeslagen procedure.

Oplossing

Voer de volgende code uit om het probleem op te lossen.

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

Het eerste deel schakelt de geavanceerde opties voor weergeven in, die de sp_configure . tonen systeem opgeslagen procedure geavanceerde opties. Als dit niet is ingeschakeld, krijgt u nog een foutmelding (waarschijnlijk foutbericht 15123), waarin staat dat de configuratieoptie niet bestaat of dat het een geavanceerde optie is.

Het tweede deel gebruikt sp_configure om de optie ad-hoc gedistribueerde zoekopdrachten in te schakelen.

Als je die code eenmaal hebt uitgevoerd, zou je ad-hoc gedistribueerde zoekopdrachten moeten kunnen uitvoeren.

Geavanceerde opties verbergen

Zodra u ad-hoc gedistribueerde zoekopdrachten heeft ingeschakeld, moet u waarschijnlijk de geavanceerde opties voor weergeven weer verbergen.

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

  1. Verbeter de databaseprestaties met 400%

  2. Effectieve monitoring van MySQL met SCUMM-dashboards:deel 3

  3. Hoe vindt u kolomnamen voor alle tabellen in alle databases in SQL Server

  4. PHP (MySQL)-fout:waarschuwing:mysql_num_rows() verwacht dat parameter 1 resource is