Question

Je vois des erreurs qui indiqueraient une "fuite de connexion". Autrement dit, les connexions qui n'étaient pas correctement fermées et le pool s'épuisent. Alors, comment puis-je instrumenter cela pour voir exactement combien sont ouvertes à un moment donné?

Était-ce utile?

La solution

Si vous utilisez .net, il existe un fournisseur de données .net pour SQL Server dans PerfMon. Vous pouvez regarder NumberOfPooledConnections ici

Autres conseils

La procédure stockée sp_who2 dans la table principale est pratique pour cela du côté de la base de données. Il vous montrera les connexions à la base de données. Si vous recherchez plus de données, essayez également le profilage.

Implémentez un service permettant de créer, d’ouvrir et de fermer toutes les connexions. Tenez un comptoir ici. Connectez-vous à votre infrastructure de journalisation chaque fois qu'une connexion est ouverte ou fermée.

vous pouvez utiliser l'outil de profilage pour suivre toutes les connexions existantes, en ouverture et en fermeture

Vous pouvez ouvrir le profileur à partir du gestionnaire d'entreprise

Si vous utilisez SQL 2000, vous pouvez vérifier dans SQL 2000 Enterprise Manager:

  

Pour afficher la fenêtre Activité en cours dans   SQL Server Enterprise Manager, développez   un groupe de serveurs, puis développez un   serveur. Développez Management, puis   développer l'activité en cours. Cliquez sur le processus   Info.

     

L'activité actuelle du serveur est   affiché dans le volet de détails.

( http://technet.microsoft.com/en-us/ bibliothèque / cc738560.aspx )

(recherche Google: activité actuelle de SQL 2000)

Vous pouvez exécuter sp_who2 dans SQL Server Management Studio ou dans Query Analyzer pour afficher toutes vos connexions actuelles. C'est SQL Server. Je ne suis pas sûr du SGBDR que vous utilisez.

Consultez également votre code et assurez-vous de fermer une connexion dès que vous n'en avez plus besoin. Soyez anal à ce sujet!

Utilisez la commande " en utilisant " déclaration pour vous assurer que vos connexions sont toujours fermées et vous n'aurez plus jamais ce problème:

using(SqlConnection connection = new SqlConnection())
{
...
} // connection is always disposed (i.e. closed) here, even if an exception is thrown
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top