Suppression des connexions
Le pooler de connexions supprime une connexion du pool après qu'elle a été inactive pendant une longue période, ou si le pooler détecte que la connexion avec le serveur a été interrompue.
Notez qu'une connexion interrompue ne peut être détectée qu'après avoir tenté de communiquer avec le serveur. Si une connexion n'est plus connectée au serveur, elle est marquée comme non valide.
Les connexions non valides sont supprimées du pool de connexions uniquement lorsqu'elles sont fermées ou récupérées.
S'il existe une connexion à un serveur qui a disparu, cette connexion peut être établie à partir du pool même si le pooler de connexions n'a pas détecté la connexion interrompue et l'a marquée comme non valide.
C'est le cas parce que la surcharge de vérification de la validité de la connexion éliminerait les avantages d'avoir un pooler en provoquant un autre aller-retour vers le serveur.
Lorsque cela se produit, la première tentative d'utilisation de la connexion détecte que la connexion a été interrompue et une exception est levée.
Fondamentalement, ce que vous voyez est cette exception dans la dernière phrase.
Une connexion est prise à partir du pool de connexions, l'application ne sait pas que la connexion physique a disparu, une tentative d'utilisation est faite sous l'hypothèse que la connexion physique est toujours là.
Et vous obtenez votre exception.
Il y a quelques raisons courantes à cela.
- Le serveur a été redémarré, cela fermera les connexions existantes.
Dans ce cas, jetez un œil au journal SQL Server, qui se trouve généralement sous: C: \ Program Files \ Microsoft SQL Server \\ MSSQL \ LOG
Si l'horodatage du démarrage est très récent, nous pouvons soupçonner que c'est ce qui a causé l'erreur. Essayez de corréler cet horodatage avec l'heure de l'exception.
2009-04-16 11: 32: 15.62 Serveur Journalisation des messages SQL Server dans le fichier 'C: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG'.
- Quelqu'un ou quelque chose a tué le SPID qui est utilisé.
Encore une fois, regardez dans le journal SQL Server. Si vous trouvez un kill, essayez de corréler cet horodatage avec l'heure de l'exception.
2009-04-16 11: 34: 09.57 L'ID de processus spidXX XX a été tué par le nom d'hôte xxxxx, l'ID de processus hôte XXXX.
- Il y a à nouveau un basculement (dans une configuration miroir par exemple), jetez un œil dans le journal SQL Server.
S'il y a un basculement, essayez de corréler cet horodatage avec l'heure de l'exception.
2009-04-16 11: 35: 12.93 spidXX La base de données en miroir «» change les rôles de «PRINCIPAL» à «MIRROR» en raison du basculement.