Effectuer des requêtes SQL distribuées à l'aide de ADSI

Résumé

Cet article fournit des informations sur l’utilisation du fournisseur OLEDB de Active Directory Services Interfaces (ADSI) à partir de SQL Server pour exécuter une requête distribuée.

Plus d'informations

Configuration requise et obtenir des informations générales

Une requête distribuée permet au développeur remplir une table de SQL Server ou l’affichage des données dans Active Directory ou un autre serveur Lightweight Directory Access Protocol (LDAP). Pour exécuter une requête distribuée à l’aide d’ADSI, le serveur doit exécuter SQL Server version 7.0 ou ultérieure. ADSI est un composant du système de Windows 2000, par conséquent, aucune installation supplémentaire dans ne requis sur ce système d’exploitation. Si le système d’exploitation est Windows NT 4.0, le Active Directory Client Extension (DSClient) pour Windows NT 4.0 doit être installée. Pour plus d’informations, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

288358 l’installation de l’Extension du Client Active Directory

Une procédure pas à pas pour l’exécution d’une requête distribuée à l’aide d’ADSI sont accessibles sous « Joindre les données hétérogènes » dans l’article suivant de la bibliothèque MSDN :

Lors de l’émission de la commande OPENQUERY, SQL Server appelle du fournisseur OLEDB de ADSI et ADsDSOObject, qui a été configuré dans la fonction de sp_addlinkedserver . Le fournisseur transmet la requête au sous-jacent des fonctions d’interface ADSI lDirectorySearch. Ces fonctions ADSI rendra les appels LDAP nécessaires pour le serveur de votre choix. Les réponses du serveur seront ensuite transmis sauvegarder les mêmes calques à SQL Server.

Une requête dans les dialectes SQL ou LDAP peut être utilisée. Vous trouverez des informations supplémentaires sur la recherche avec le fournisseur OLEDB de d’ADSI sous l’article MSDN suivant :Une discussion des deux dialectes se trouve sous la sous-rubrique suivante dans MSDN :Si un astérisque (*) est spécifié pour la liste d’attributs, le fournisseur OLEDB de ADSI retourne un jeu d’enregistrements contenant uniquement l’ADsPath de chaque entrée. ADsPath est un côté client généré attribut et est renvoyé sous la forme d’un attribut à valeurs singled.


Une chaîne de liaison sans serveur est celui qui ne contient pas le nom ou l’adresse IP du serveur cible. Liaisons sans serveur sont utilisés pour trouver le meilleur contrôleur de domaine Windows 2000 pour gérer la demande. Liaisons sans serveur ne peut pas être utilisées lorsque le serveur cible n’est pas un contrôleur de domaine Windows 2000 pour le domaine par défaut. Pour plus d’informations sur les liaisons sans serveur, reportez-vous à la section.

Dans l’exemple dans le livre blanc, le serveur LDAP est contacté en utilisant les informations d’identification sous lesquelles l’appel OPENQUERY a été effectuée. En fonction de la conception de votre application, cela peut ou peut ne pas être souhaitable. Si l’authentification SQL Server au lieu de l’authentification Windows est utilisée, les informations d’identification SQL seront transmises à l’annuaire. Problèmes d’authentification seront produit également si le service d’annuaire cible ne prend pas en charge l’authentification Windows.
Pour plus d’informations sur l’utilisation de ADSI pour interroger les serveurs LDAP, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

251195 comment utiliser ADSI pour interroger un serveur LDAP de tiers

S’il n’est pas souhaitable de contacter l’annuaire en utilisant les mêmes informations d’identification en tant que l’appel OPENQUERY , un sp_addlinksrvlogin peut servir à modifier l’identité sous laquelle un serveur distant est contacté. Lorsque le sp_addlinksrvlogin est implémentée ADSI appellera une simple liaison au service d’annuaire cible avec les informations spécifiées dans les paramètres de l’argument rmtuser et rmtpassword . Il est important de noter qu’une simple liaison va transmettre les informations d’identification au serveur d’annuaire en texte clair. Cela présente un avantage : elle sera compris par de nombreux serveurs de répertoire, mais présente un inconvénient que le nom d’utilisateur et le mot de passe sera visibles sur le Moniteur réseau. Pour plus d’informations sur les liaisons simples, consultez :



Une fois ajouté, le sp_addlinksrvlogin peut être supprimé en appelant la procédure sp_droplinkedsrvlogin.

Limitations

Le processus d’utilisation de l’instruction OPENQUERY pour extraire des informations à partir d’un serveur LDAP souffre de certaines limites. Les limites peuvent être contournées dans certains cas, mais dans d’autres la conception de l’application doit être modifiée. Une application externe ou un objet COM qui utilise ADSI pour extraire les informations du serveur LDAP et ensuite créer une table dans SQL à l’aide d’ADO ou autres méthodes d’accès aux données est une autre méthode viable.

La première limitation est que les propriétés à valeurs multiples ne peut pas être retournées dans le jeu de résultats dans SQL Server. ADSI lit les informations de schéma à partir du serveur LDAP qui définit la structure et la syntaxe des classes et des attributs utilisés par le serveur. Si l’attribut est demandée à partir du serveur LDAP est défini dans le schéma comme étant à valeurs multiples, il ne peut pas être retourné dans une instruction OPENQUERY.

Il est généralement utilisé pour un serveur d’annuaire appliquer une limitation du serveur sur le nombre d’objets qui seront renvoyés pour une requête donnée. Il s’agit d’empêcher les attaques par déni de service et la surcharge du réseau. Pour correctement interroger le serveur d’annuaire, requêtes de grande ampleur doivent être divisés en de nombreuses petites. Une façon de procéder est via un processus appelé pagination. La pagination est disponible via le fournisseur OLE DB de d’ADSI, mais il n’existe actuellement aucun moyen de l’effectuer à partir d’une requête distribuée SQL. Cela signifie que le nombre total d’objets qui peuvent être renvoyés pour une requête est la limite du serveur. Dans Windows 2000 Active Directory, la limite du serveur par défaut est 1 000 objets. Vous trouverez plus d’informations sur la pagination sous la rubrique suivante de MSDN Library :

Pour plus d’informations sur la modification de la limite du serveur pour maxPageSize à l’aide de NTDSUtil, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

315071 comment afficher et définir des stratégies LDAP dans Active Directory à l’aide de Ntdsutil.exe

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :

187529 comment utiliser ADO pour accéder à des objets via un fournisseur LDAP ADSI

Vous trouverez plus d’informations, y compris un exemple, dans la section ADSI de la plate-forme SDK, plus d’informations sur lequel vous pouvez trouver sur le site Web de Microsoft à l’adresse suivante :
Le lien ci-dessus fournit également des informations sur l’endroit où obtenir le téléchargement de différents kits de développement logiciel Windows au bas de la page sous la sectiont intitulée : « Ce que d’autres utilisateurs téléchargent ».
Propriétés

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

Commentaires