Comme les autres réponses l'ont dit, sp_reset_connection
indique que le pool de connexions est réutilisé. Soyez conscient d'une conséquence particulière !
Blog MSDN de Jimmy Mays a dit :
sp_reset_connection ne réinitialise PAS le niveau d'isolement des transactions sur la valeur par défaut du serveur à partir du paramètre de la connexion précédente.
MISE À JOUR :À partir de SQL 2014, pour les pilotes clients avec TDS version 7.3 ou supérieure, les niveaux d'isolement des transactions seront réinitialisés aux valeurs par défaut.
ref :SQL Server :fuites au niveau de l'isolement sur les connexions regroupées
Voici quelques informations supplémentaires :
Que fait sp_reset_connection ?
Les couches de l'API d'accès aux données comme ODBC, OLE-DB et System.Data.SqlClient appellent toutes les procédures stockées (internes) p_reset_connection lors de la réutilisation d'une connexion à partir d'un pool de connexions. Il le fait pour réinitialiser l'état de la connexion avant qu'elle ne soit réutilisée, mais nulle part n'est documenté ce qui est réinitialisé. Cet article tente de documenter les parties de la connexion qui sont réinitialisées.
sp_reset_connection réinitialise les aspects suivants d'une connexion :
Tous les états et numéros d'erreur (comme @@error)
Arrête tous les EC (contextes d'exécution) qui sont des threads enfants d'un EC parent exécutant une requête parallèle
Attend toutes les opérations d'E/S en attente qui sont en attente
Libère tous les tampons détenus sur le serveur par la connexion
Déverrouille toutes les ressources de tampon utilisées par la connexion
Libère toute la mémoire allouée appartenant à la connexion
Efface toutes les tables de travail ou temporaires créées par la connexion
Tue tous les curseurs globaux appartenant à la connexion
Ferme toutes les poignées SQL-XML ouvertes qui sont ouvertes
Supprime toutes les tables de travail liées à SQL-XML ouvertes
Ferme toutes les tables système
Ferme toutes les tables utilisateur
Supprime tous les objets temporaires
Abandonne les transactions ouvertes
Défauts d'une transaction distribuée lorsqu'elle est inscrite
Décrémente le nombre de références pour les utilisateurs de la base de données actuelle qui libère les verrous de la base de données partagée
Libère les verrous acquis
Libère toutes les poignées acquises
Réinitialise toutes les options SET aux valeurs par défaut
Réinitialise la valeur @@rowcount
Réinitialise la valeur @@identity
Réinitialise toutes les options de trace au niveau de la session à l'aide de dbcc traceon()
Réinitialise CONTEXT_INFO à
NULL
dans SQL Server 2005 et plus récent [ ne fait pas partie de l'article original ]sp_reset_connection ne sera PAS réinitialisé :
Contexte de sécurité, c'est pourquoi le regroupement de connexions correspond aux connexions en fonction de la chaîne de connexion exacte
Rôles d'application entrés à l'aide de sp_setapprole, car les rôles d'application ne pouvaient pas du tout être annulés avant SQL Server 2005. À partir de SQL Server 2005, les rôles d'application peuvent être annulés, mais uniquement avec des informations supplémentaires qui ne font pas partie de la session. Avant de fermer la connexion, les rôles d'application doivent être annulés manuellement via sp_unsetapprole à l'aide d'une valeur de "cookie" qui est capturée lorsque
sp_setapprole
est exécuté.
Remarque :J'inclus la liste ici car je ne veux pas qu'elle se perde dans le Web toujours éphémère.