Les connexions orphelines et les pools qui débordent sont fâcheux. Et, si l'on en juge par le nombre de discussions des newsgroups à leur propos, ils sont monnaie courante. Le coupable le plus probable est le DataReader. Pour tester son comportement, j'ai écrit une application Windows Forms (WinForms) exemple en
Inculper le DataReader
me concentrant sur l’option
CommandBehavior.CloseConnection.
(Vous pouvez télécharger
cette application à l’adresse http://
www.itpro.fr). Vous pouvez définir
cette option quand vous utilisez la méthode
ExecuteReader de l’objet
SqlCommand pour exécuter la requête
et renvoyer un DataReader.
Mon application de test
montre que même quand
on utilise cette option, si on
ne ferme pas explicitement
le Data-Reader (ou SqlConnection),
le pool déborde.
Et l’application émet une exception
quand le code demande
plus de connexions
que le pool n’en contiendra.
Certains développeurs
soutiennent que si vous définissez
l’option Command-
Behavior.CloseConnection,
le DataReader et sa connexion
associée se fermeront
quand le DataReader
aura fini de lire les données.
Ils ont en partie raison, mais
l’option ne se comporte
ainsi que quand on utilise
un contrôle de lien complexe
dans une application Web
ASP.NET. Faire une boucle dans un jeu
de résultats DataReader jusqu’à la fin
de son rowset (c’est-à -dire quand
Dr.Read – la méthode Read de
DataReader – renvoie faux) ne suffit
pas pour déclencher la fermeture automatique
de la connexion. En revanche,
si vous liez à un contrôle
bound complexe comme le DataGrid,
le contrôle ferme le DataReader et la
connexion – mais seulement si vous
avez défini l’option Command-
Behavior.CloseConnection.
Si vous exécutez une requête par
une autre méthode Execute (Execute-
Scalar, ExecuteNonQuery, Execute-
XMLReader, par exemple), il vous incombe
d’ouvrir l’objet SqlConnection
et, surtout, de le fermer quand la requête
se termine. Si vous ratez une fermeture,
les connexions orphelines
s’accumulent rapidement.
Téléchargez cette ressource

Rapport Forrester sur les services de réponse aux incidents de cybersécurité
Dans ce rapport, basé sur 25 critères, Forrester Consulting passe au crible les 14 principaux fournisseurs de services de réponse aux incidents de cybersécurité du marché. Cette analyse complète permet aux professionnels de la sécurité et de la gestion des risques d’évaluer et de sélectionner les solutions les plus adaptées à leurs besoins.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Le World Cyber Ranking, 1er classement mondial de la cybersécurité des entreprises
- Comment le Quarter Plan permet d’aligner IT et Métiers pour délivrer
- Explosion des attaques d’ingénierie sociale en 2025
- SI sous pression : 3 signes que vos flux sont mal orientés
- Transformation numérique : les entreprises françaises changent de méthode de gestion de projet en cours de route
