Comment faire pour utiliser le paramètre DisallowAdHocAccess pour contrôler l’accès aux serveurs liés

Résumé

Cet article décrit comment désactiver les requêtes ad hoc qui utilisent OPENROWSET ou la fonction OPENDATASOURCE dans Microsoft SQL Server.

Désactiver les instructions Transact-SQL

Vous pouvez désactiver les instructions Transact-SQL qui utilisent des chaînes de connexion ad hoc avec des fournisseurs OLE DB spécifiques dans les fonctions OPENROWSET et OPENDATASOURCE en suivant l’une des actions suivantes :

  • Lorsque vous créez un serveur lié sur un ordinateur qui exécute SQL Server, vous pouvez spécifier la propriété DisallowAdHocAccess pour le fournisseur OLE DB.
  • Si le serveur lié existe déjà, vous pouvez modifier manuellement le Registre et puis ajoutez la valeur DisallowAdHocAccess .

Spécifiez la propriété DisallowAdHocAccess lorsque vous créez un serveur lié

Lorsque vous créez un serveur lié sur un ordinateur qui exécute SQL Server, vous pouvez spécifier la propriété DisallowAdHocAccess pour le fournisseur OLE DB. Pour ce faire, procédez comme suit :
  1. Ouvrez SQL Server Enterprise Manager, puis cliquez sur pour sélectionner le dossier de sécurité du serveur en question.
  2. Avec le bouton droit à l’entrée de Serveurs liés , puis cliquez sur Nouveau serveur lié.
  3. Cliquez sur pour sélectionner le fournisseur OLE DB que vous souhaitez utiliser, puis cliquez sur le bouton Options du fournisseur .
  4. Faites défiler vers le bas et sélectionnez la case à cocher ne pas autoriser l’accès ad hoc . Continuez terminer la création de l’entrée de serveur lié.

Modifier le Registre manuellement et ajouter la valeur DisallowAdHocAccess

Après l’enregistrée d’un serveur lié, la propriété DisallowAdHocAccess peut être définie uniquement par l’intermédiaire d’un paramètre du Registre.

Remarque  Les deux illustrations sont que d’un exemple de comment vous pouvez modifier le fournisseur OLE DB pour les deux ODBC et le fournisseur OLE DB pour SQL Server. Si vous souhaitez utiliser un autre fournisseur OLE DB, vous devez modifier l’entrée de ce fournisseur.

Important Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des problèmes graves peuvent survenir si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le Registre avant de le modifier. Vous pourriez alors restaurer le Registre si un problème survient. Pour plus d’informations sur la façon de sauvegarder et de restaurer le Registre, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
322756 comment sauvegarder et restaurer le Registre dans Windows

Ajoutez la valeur DisallowAdHocAccess

Pour ajouter la valeur DisallowAdHocAccess , procédez comme suit :

  1. Démarrez l'Éditeur du Registre.
  2. Recherchez, puis cliquez sur la clé suivante dans le Registre :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Exemple

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\MSDASQL

  3. Dans le menu Edition , cliquez sur Ajouter une valeur, puis ajoutez cette valeur de Registre :
       Value name: DisallowAdHocAccess
    Data type: REG_DWORD
    Radix: Hex
    Value data: 1
  4. Quittez l’Éditeur du Registre.

Modifier une valeur DisallowAdHocAccess existante

Pour modifier une valeur DisallowAdHocAccess existante, procédez comme suit :

  1. Démarrez l'Éditeur du Registre.
  2. Recherchez et puis cliquez sur la valeur DisallowAdHocAccess sous la clé suivante dans le Registre :
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\<ProviderName>
    Exemple

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\Microsoft.ACE.OLEDB.12.0
  3. Dans le menu Edition , cliquez sur valeur DWORD, tapez 1, puis cliquez sur OK.
  4. 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\ < nom de l’Instance > \Providers\ < ProviderName >

Remarque
  • Une modification de la valeur de DisallowAdHocAscess à partir de 1 à 0 ne requiert pas de redémarrage du Service SQL, considérant que passer de 0 à 1 devra disposer d’un Service SQL redémarrer pour que la modification a été effectuée pour devenir effectif.
  • Avec la propriété DisallowAdHocAccess est définie à 1, SQL Server n’autorise pas l’accès ad hoc par l’intermédiaire de OPENROWSET et les fonctions OPENDATASOURCE par rapport au fournisseur OLE DB spécifié. Si vous essayez d’appeler ces fonctions dans des requêtes ad hoc, vous recevez un message d’erreur semblable au suivant :
    Serveur : Msg 7415, niveau 16, état 1, ligne 1 des accès Ad hoc pour le fournisseur OLE DB 'Microsoft.Jet.OLEDB.4.0' a été refusé. Vous devez accéder à ce fournisseur via un serveur lié.
    En d’autres termes, avec la propriété DisallowAdHocAccess est définie sur 1 pour un fournisseur OLE DB, vous devez utiliser un programme d’installation de serveur lié prédéfini pour le fournisseur OLE DB. Vous pouvez transmettre n’est plus dans une chaîne de connexion ad hoc qui fait référence à ce fournisseur OPENROWSET ou la fonction OPENDATASOURCE .


Références

Documentation de SQL Server en ligne ; rubriques : « Fournisseurs de configuration OLE DB pour les requêtes distribuées » ; « Référence de Transact-SQL OPENROWSET » ; « Référence de Transact-SQL OPENDATASOURCE »

Propriétés

ID d'article : 327489 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires