Exploration de la fonctionnalité de sp_reset_connection dans le pool de connexions SQL Server
SQL Server utilise le pool de connexions pour gérer efficacement les connexions à la base de données. Au cœur de ce mécanisme se trouve la procédure stockée sp_reset_connection, qui est invoquée lors de la réutilisation des connexions du pool. Son objectif principal est de réinitialiser l'état de la connexion afin de garantir sa disponibilité pour une utilisation ultérieure.
Réinitialisation complète
sp_reset_connection réinitialise divers aspects d'une connexion, notamment :
- États et numéros d'erreur
- Contextes d'exécution (ECs)
- Opérations d'E/S en cours
- Tampons du serveur conservés
- Ressources de tampon verrouillées
- Mémoire allouée par la connexion
- Temporaire tables
- Curseurs globaux
- Ouvrir SQL-XML poignées et tables de travail associées
- Tables système et utilisateur
- Objets temporaires
- Transactions ouvertes
- Inscriptions de transactions distribuées
- Verrous de base de données partagés
- Acquis verrous
- Poignées
- Options SET
- @@rowcount
- @@identity
- Trace au niveau de la session options
Exclusions
Cependant, sp_reset_connection évite spécifiquement de réinitialiser :
- Le contexte de sécurité, qui est crucial pour faire correspondre les connexions en fonction de la chaîne de connexion
- Rôles d'application, car ils ne peuvent pas être annulé
- Niveau d'isolement des transactions
Implications pratiques
- Les rôles d'application établis via sp_setapprole restent en vigueur.
- Les transactions doivent être explicitement gérées par l'application, car sp_reset_connection ne se réinitialise pas eux.
- Évitez de compter sur la préservation des options SET lors de la réutilisation de la connexion, car elles sont réinitialisées à leurs valeurs par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!