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