Que signifie "connexion de réinitialisation exec sp" dans le profileur de Serveur Sql?

essayer de comprendre ce que Sql Profiler signifie en émettant "sp_reset_connection".

j'ai la ligne suivante, "exec sp_reset_connection", suivie de BatchStarting et complétée,

RPC:Completed       exec sp_reset_connection
SQL:BatchStarting   SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted  SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]    

est-ce que la première ligne" exec sp_reset_connection " signifie que tout le processus (ma connexion a été ouverte, le stmt de select est lancé, puis la connexion est fermée et relâchée) a juste lieu? Ou ma connexion est toujours ouvert étape.

et, pourquoi la connexion sp_reset_connection exécutée avant ma propre déclaration select, ne devrait-elle pas être réinitialisée après le sql de l'utilisateur?

j'essaie de savoir s'il y a un moyen de savoir plus en détail quand une connexion est ouverte et fermée?

en voyant "exec sp_reset_connection", cela signifie-t-il que ma connexion est fermée?

157
demandé sur Luke Girvin 2009-03-13 04:07:34

3 réponses

comme dans les autres réponses, sp_reset_connection indique que le pool de connexion est réutilisé. Soyez conscient d'une conséquence particulière!

Jimmy Mays' MSDN Blog said:

sp_reset_connection ne réinitialise PAS le niveau d'isolement de la transaction défaut du serveur par rapport au précédent configuration de connexion.

UPDATE : à partir de SQL 2014, pour les pilotes clients avec TDS version 7.3 ou supérieure, les niveaux d'isolation des transactions seront réinitialisés par défaut.

ref: SQL Server: le niveau d'Isolation des fuites à travers 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 système.Données.SqlClient tous appeler la procédure (interne) stockée sp_reset_connection lors de la réutilisation d'un connexion à partir d'un pool de connexions. Il cela pour réinitialiser l'état de l' connexion avant la réutilisation, cependant nulle part est documenté les choses se réinitialiser. Cet article tente pour documenter les parties connexion qui se réinitialiser.

sp_reset_connection reset the aspects suivants d'une connexion:

  • tous les États d'erreur et les nombres (comme @@error)

  • arrête tous les contextes D'exécution) qui sont fils d'enfant D'un parent EC exécution d'une requête parallèle

  • Attend pour toutes les I/O opérations en cours

  • serveur par la connexion

  • déverrouille toute ressource tampon qui sont utilisés par la connexion

  • libère toute la mémoire allouée propriété de la connexion

  • nettoie tout travail ou temporaire les tables qui sont créées par le connexion

  • Tue globale de tous les curseurs détenue par le connexion

  • ferme toutes les poignées SQL-XML ouvertes

  • supprime toutes les tables de travail open SQL-XML

  • ferme toutes les tables de système

  • ferme toutes les tables d'utilisateurs

  • Gouttes tous les objets temporaires

  • annule les transactions ouvertes

  • défauts d'une transaction distribuée lors de l'enrôlement

  • décrète le nombre de référence pour les utilisateurs de la base de données courante qui communiqués serrures de base de données partagée

  • Libère les verrous acquis

  • libère toutes les poignées acquises

  • réinitialise toutes les options de SET vers les valeurs par défaut

  • rétablit la valeur @@rowcount

  • réinitialise la valeur @@identity

  • réinitialise une trace de niveau de session options utilisant dbcc traceon ()

  • Resets CONTEXT_INFO to NULL in SQL Server 2005 and new [ ne fait pas partie de l'article original]

sp_reset_connection ne sera PAS remis à zéro:

  • contexte de Sécurité, c'est pourquoi la mise en commun des connexions correspond aux connexions basé sur la chaîne de connexion exacte

  • rôles d'Application entrés en utilisant sp_setapprole, depuis l'application les rôles ne peuvent pas être annulées

Note: j'inclus la liste ici car je ne veux pas qu'elle soit perdue dans le web toujours transitoire.

178
répondu ram 2017-05-23 12:02:12

c'est une indication que la mise en commun des connexions est utilisée (ce qui est une bonne chose).

17
répondu Mitch Wheat 2009-03-13 01:32:38

Remarque cependant:

si vous définissez le niveau D'isolement de la TRANSACTION dans une procédure stockée ou un déclencheur, lorsque l'objet retourne le contrôle, le niveau d'isolement est réinitialisé au niveau en vigueur lorsque l'objet a été invoqué. Par exemple, si vous définissez la lecture répétable dans un lot, et que le lot appelle alors une procédure stockée qui fixe le niveau d'isolement à sérialisable, le réglage du niveau d'isolement revient à la lecture répétable lorsque la procédure stockée renvoie le contrôle à la lot.

http://msdn.microsoft.com/en-us/library/ms173763.aspx

8
répondu SAO 2011-08-03 10:01:08