Partager via


Configuration du serveur : requêtes distribuées ad hoc

S’applique à : SQL Server

Par défaut, SQL Server n’autorise pas les requêtes distribuées ad hoc avec OPENROWSET et OPENDATASOURCE. Lorsque cette option est définie sur 1, SQL Server autorise l'accès d'égal à égal. Lorsque cette option n'est pas définie ou lorsqu'elle est définie sur 0, SQL Server ne permet pas non plus l'accès d'égal à égal.

Les requêtes distribuées ad hoc utilisent les fonctions OPENROWSET et OPENDATASOURCE pour la connexion aux sources de données distantes OLE DB. OPENROWSET et OPENDATASOURCE doivent être utilisés uniquement pour faire référence à des sources de données OLE DB faisant l'objet d'accès peu fréquents. Pour les sources de données faisant l'objet d'accès plus fréquents, définissez un serveur lié.

L'activation de l'utilisation de noms ad hoc signifie que tout compte authentifié à SQL Server peut accéder au fournisseur. Les administrateurs SQL Server doivent activer cette fonctionnalité pour les fournisseurs accessibles en toute sécurité via une connexion locale.

Notes

Si vous tentez d’établir une connexion ad hoc avec Ad Hoc Distributed Queries désactivé, l’erreur suivante s’affiche :

Msg 7415, Level 16, State 1, Line 1

Ad hoc access to OLE DB provider 'Microsoft.ACE.OLEDB.12.0' has been denied. You must access this provider through a linked server.

Azure SQL Database et Azure SQL Managed Instance

Consultez l’article Comparaison des fonctionnalités : Azure SQL Database et Azure SQL Managed Instance pour référence.

Exemples

L'exemple suivant active Ad Hoc Distributed Queries puis interroge un serveur nommé Seattle1 à l'aide de la fonction OPENROWSET.

USE master;
GO

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'Ad Hoc Distributed Queries', 1;
GO

RECONFIGURE;
GO

SELECT a.*
FROM OPENROWSET ('MSOLEDBSQL', 'Server=Seattle1;Trusted_Connection=yes;', 'SELECT GroupName, Name, DepartmentID
      FROM AdventureWorks2022.HumanResources.Department
      ORDER BY GroupName, Name') AS a;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO