Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment désactiver les requêtes ad hoc qui utilisent la OPENROWSET ou les OPENDATASOURCE fonctionnalités dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 327489
Résumé
Vous pouvez utiliser ou utiliser OPENROWSET des OPENDATASOURCE instructions dans SQL Server comme méthode ad hoc pour connecter et accéder aux données à partir d’un fournisseur OLEDB distant, y compris une instance SQL Server distante. Ces instructions peuvent être utilisées pour accéder aux données distantes à partir de sources de données OLE DB uniquement lorsque l’option de Registre DisallowAdhocAccess est explicitement définie sur 0 pour le fournisseur spécifié et que l’option de configuration avancée des requêtes distribuées ad hoc est activée. Lorsque ces options ne sont pas définies, le comportement par défaut n’autorise pas l’accès ad hoc.
Cet article fournit des détails supplémentaires sur la configuration de DisallowAdhocAccess via SQL Server Management Studio et les paramètres de Registre, ainsi que sur le comportement par défaut.
Désactivation de l’accès ad hoc à l’aide de SQL Server Management Studio
Spécifiez la DisallowAdHocAccess propriété du fournisseur dans SQL Server Management Studio (SSMS)
Ouvrez SSMS et développez fournisseurs sous Serveurs liés.
Cliquez pour sélectionner le fournisseur OLE DB que vous souhaitez utiliser, puis sélectionnez le bouton Options du fournisseur.
Faites défiler vers le bas et cochez la case à cocher Interdire la propriété d’accès adhoc, puis sélectionnez OK.
Désactivation de l’accès ad hoc à l’aide de l’éditeur de Registre
Important
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, vérifiez que vous suivez ces étapes attentivement. Pour une protection supplémentaire, sauvegardez le Registre avant de le modifier. Ensuite, vous pouvez restaurer le Registre si un problème se produit. Pour plus d’informations sur la sauvegarde et la restauration du registre, voir : Procédure de sauvegarde, de modification et de restauration du Registre dans Windows.
Une fois qu’un serveur lié est enregistré, la DisallowAdHocAccess propriété ne peut être définie que par le biais d’un paramètre de Registre.
Ajouter la valeur DisallowAdHocAccess
Pour ajouter la DisallowAdHocAccess valeur, procédez comme suit :
Démarrez l'Éditeur du Registre.
Recherchez, puis sélectionnez la clé dans le Registre : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>
Exemple : Si vous essayez de modifier ce paramètre pour le fournisseur Microsoft OLEDB pour les pilotes ODBC, la clé sera :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQLDans le menu Modifier , sélectionnez Ajouter une valeur, puis ajoutez cette valeur de Registre :
Value name: DisallowAdHocAccess Data type: REG_DWORD Radix: Hex Value data: 1Quittez l'Éditeur du Registre.
Activer l’accès à distance ad hoc
Après avoir vérifié que l’option de configuration avancée des requêtes distribuées ad hoc est activée, vous devez définir l’option de Registre DisallowAdhocAccess sur 0 pour le fournisseur spécifié.
Pour modifier une valeur existante DisallowAdHocAccess , procédez comme suit :
Démarrez l'Éditeur du Registre.
Recherchez, puis sélectionnez la
DisallowAdHocAccessvaleur sous la clé du Registre : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers<ProviderName>Exemple :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0Dans le menu Modifier, sélectionnez DWORD, tapez 1, puis ok.
Quittez l'Éditeur du Registre. Pour une instance nommée, la clé de Registre est différente :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName>
Redémarrage requis
Une modification de la valeur de DisallowAdHocAccess 1 à 0 ne nécessiterait pas de redémarrage du service SQL, tandis qu’une modification de 0 à 1 aurait besoin d’un redémarrage du service SQL pour que la modification apportée devienne effective.
Comportement par défaut
L’accès ad hoc des sources de données OLE BD distantes à l’aide OPENROWSET et OPENDATASOURCE est désactivé par défaut et aucune configuration supplémentaire n’est nécessaire. Vous devez utiliser les procédures décrites dans l’article uniquement si cet accès à distance a été activé explicitement.
Note
Avec le paramètre par défaut, si vous essayez d’appeler ces fonctions dans des requêtes ad hoc, vous recevez un message d’erreur semblable au message suivant : Serveur : Msg 7415, Niveau 16, État 1, Ligne 1 Accès ad hoc au fournisseur OLE DB « Microsoft.Jet.OLEDB.4.0 » a été refusé. Vous devez accéder à ce fournisseur par le biais d'un serveur lié.
En d’autres termes, avec la DisallowAdHocAccess propriété définie sur 1 pour un fournisseur OLE DB spécifique, vous devez utiliser une configuration de serveur lié prédéfinie pour le fournisseur OLE DB spécifique. Vous ne pouvez plus passer une chaîne de connexion ad hoc qui référence ce fournisseur à la fonction ou à la OPENROWSET OPENDATASOURCE fonction.