Information : ADO génère dynamiquement des connexions supplémentaires à SQL Server

Traductions disponibles Traductions disponibles
Numéro d'article: 194979 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Résumé

(ActiveX Data Objects) masque les complexités de la communication avec votre base de données de nombreux et rend le code écrit pour interroger votre base de données simple. Par exemple, si vous exécutez deux requêtes asynchrones qui génèrent des curseurs pour le même objet de connexion ADO, ces requêtes sont mises en file d'attente. Une fois la première requête asynchrone est terminée, le second exemple exécute. Demande de deux curseurs firehose sur le même objet de connexion ADO crée deux connexions réelles à la base de données.

En fait, ce comportement est contrôlé par le fournisseur OLE DB utilisé pour communiquer avec SQL Server, pas par ADO lui-même. ADO vous demande le fournisseur (le fournisseur OLE DB natif ou le fournisseur par défaut qui communique à ODBC, en fonction sur la façon dont vous vous connectez à SQL Server) d'exécuter la requête et le fournisseur détermine si une autre connexion à la base de données est requise. Dans ce cas, le fournisseur crée cette nouvelle connexion. Il est possible que vous pouvez utiliser un objet de connexion ADO mais avoir plusieurs connexions à votre base de données SQL Server ouvert.

De comprendre ce problème, plus vous serez en mesure d'optimiser votre code ADO. Par exemple, si vous ouvrez deux objets jeu d'enregistrements en définissant la chaîne de connexion dans la propriété ActiveConnection, créez deux connexions distinctes à votre base de données.

Remarque : Ce comportement n'est pas spécifique à SQL Server ou les fournisseurs pour SQL Server.

La meilleure façon de déterminer le nombre de connexions votre application est en fait qu'à SQL Server consiste à utiliser les utilitaires de SQL Server, tels que SQL Trace ou de l'Analyseur de performances lorsque vous exécutez votre application.

Plus d'informations

Vous trouverez ci-après quelques lignes directrices :

Curseurs côté client

Le moteur de curseur de client de ADO utilise des curseurs firehose lorsque récupération des données à partir du serveur pour des performances optimales. Le moteur de curseur client conserve ces données dans son propre curseur au lieu d'utiliser de ressources à partir du serveur ou le fournisseur. Si vous effectuez une requête asynchrone en utilisant le moteur du curseur client ADO, la connexion réelle à SQL Server est essentiellement bloquée jusqu'à ce que cette requête est terminée et ADO récupère tous les résultats. Par conséquent, si vous essayez d'utiliser l'objet de connexion ADO pendant que cette requête est en cours d'exécution vous créerez une deuxième connexion.

Curseurs côté serveur

Vous pouvez avoir plusieurs curseurs firehose non ouverts sur une connexion et récupérer des données à partir d'un d'eux. Toutefois, si vous disposez d'un curseur firehose non ouvrir et que vous ouvrez ensuite un curseur firehose, vous recevez une deuxième connexion à votre base de données. Le fournisseur établit la connexion deuxième pour vous fournir autant de flexibilité que possible pour travailler avec vos objets jeu d'enregistrements. Cette façon vous pouvez toujours manipuler votre curseur firehose non et vos curseurs firehose. Si le fournisseur crée le curseur firehose sur la même connexion réelle à la base de données, vous ne pourrez pas récupérer plus d'informations SQL Server jusqu'à ce que vous récupérer toutes les données à partir du curseur firehose.

En outre, si vous ouvrez un curseur firehose, cette connexion à la base de données est maintenant liée jusqu'à ce que vous récupérer toutes les données de ce curseur. Cela signifie que si vous utilisez un seul objet de connexion ADO pour ouvrir un curseur firehose, puis sur un curseur firehose non, le deuxième curseur (non-firehose) s'ouvre sur une seconde connexion à la base de données. Si vous récupérez tout d'abord toutes les données à partir du curseur firehose, le deuxième curseur de (non-firehose) est s'ouvre sur la même connexion à la base de données.

Propriétés

Numéro d'article: 194979 - Dernière mise à jour: vendredi 7 février 2014 - Version: 1.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ActiveX Data Objects 1.5
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
Mots-clés : 
kbnosurvey kbarchive kbmt kbdatabase kbinfo kbprovider KB194979 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 194979
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com