Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Correction de "SQL Server a bloqué l'accès à STATEMENT 'OpenRowset/OpenDatasource' du composant 'Ad Hoc Distributed Queries'"

Si vous obtenez l'erreur Msg 15281, niveau 16 dans SQL Server, il est probable que vous essayez d'exécuter une requête distribuée ad hoc, mais que vous n'avez pas activé les requêtes distribuées ad hoc.

Cela peut être résolu facilement en activant les requêtes distribuées ad hoc.

Exemple d'erreur

Voici un exemple de code qui produit l'erreur.

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

Résultat :

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.

Comme l'indique le message d'erreur, un administrateur système peut activer les requêtes distribuées ad hoc en utilisant le sp_configure procédure stockée système.

Solution

Exécutez le code suivant pour résoudre le problème.

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

La première partie active les options avancées d'affichage, qui affiche le sp_configure options avancées de la procédure stockée du système. Si cette option n'est pas activée, vous obtiendrez une autre erreur (probablement le message d'erreur 15123), indiquant que l'option de configuration n'existe pas ou qu'il s'agit peut-être d'une option avancée.

La deuxième partie utilise sp_configure pour activer l'option de requêtes distribuées ad hoc.

Une fois que vous avez exécuté ce code, vous devriez pouvoir exécuter des requêtes distribuées ad hoc.

Masquer les options avancées

Une fois que vous avez activé les requêtes distribuées ad hoc, vous devriez probablement masquer à nouveau les options avancées d'affichage.

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