8
votes

Quels inconvénients sont là pour laisser une connexion SQL ouverte?

Cela semble être une question simple, mais je me demande les inconvénients de ne pas appeler la fonction "Fermer ()".


0 commentaires

6 Réponses :


10
votes

Tôt ou tard, vous rencontrerez la "limite de connexion maximale a été atteinte". J'appellerais cela un inconvénient majeur.


0 commentaires

1
votes

Le pool de connexion se remplira et toutes les nouvelles connexions tiendront à attendre une nouvelle connexion de la piscine.


0 commentaires

0
votes

Une connexion au serveur de base de données est ouverte. Supposons que vous ayez 100 programmes frappant le même serveur ...

Vous devez également le disposer


0 commentaires

0
votes

La réponse simple rapide est que la plus tôt que vous fermez, plus tôt la connexion peut être réutilisée par le pool de connexion.


1 commentaires

"Utiliser l'utilisation est bon" est un petit mantra que je me dis à moi-même lors de la conensibilité à SQL. SQLConnection implémente Idisposable, alors enveloppez simplement votre code SQL dans un bloc «Utilisation» pour vous assurer que votre fermeture est appelée automatiquement.



7
votes

En dehors de l'épuisement du pool de connexions (comme la plupart des réponses ont été jusqu'à présent), vous risquez de verrouiller les données.

Si vous lisez ou écrivez à une table, une certaine sémantique de verrouillage provoquera verrouillée certaines lignes à d'autres connexions. Ceci est particulièrement vrai si vous avez une transaction ouverte sur la connexion.

lit et écrit peut alors échouer et l'application lancera des exceptions partout.

En bref, fermez toujours la connexion.


4 commentaires

Même après que la commande SQL en utilisant la connexion est effectuée avec les lignes?


Si vous avez une transaction ouverte, alors oui.


Un commit devrait être suffisant pour éviter ce problème, cependant.


Vous devrez commettre toutes les transactions imbriquées.



1
votes

Chaque connexion à SQL Server nécessite une allocation de mémoire.

Donc, plus les connexions que vous avez ouverte, plus la mémoire est utilisée et utilisée, cela pourrait potentiellement être mis à une meilleure utilisation.

Si vous voulez savoir à quel point la mémoire est utilisée par les connexions dans SQL Server, examinez la référence suivante.

Mémoire utilisée par les objets SQL Server


1 commentaires

Mise à jour de votre lien vers MSDN, mais à ~ 300K par connexion, c'est probablement l'une des considérations moindre ... Il faudra des milliers, ou des dizaines de milliers de connexions avant que cela ne commence à se faire sentir.