Pourquoi la sp_reset_connectionprocédure stockée système prendrait-elle plus de quelques millisecondes à s'exécuter, telle que vue via SQL Server Profiler?
J'ai pris une trace simple d'un système de production à l'aide de SQL Server Profiler, puis j'ai utilisé SqlNexus pour l'analyser. SqlNexus indique que sp_reset_connection a la durée cumulée la plus élevée - 33% de la trace globale. La durée observée varie de 0 à 7 secondes (12 à 6 833 270 microsecondes) mais se situe en moyenne à 0,956 s.
Je comprends que sp_reset_connection est appelé lorsqu'une connexion en pool est réutilisée. J'ai vu une suggestion que cela peut se produire en raison de traces étrangères , mais cela ne semble pas être le cas.
J'ai lu ce que fait le serveur lorsque le sproc est appelé mais je ne pense pas que cela serait problématique dans ce cas - le code ne laisse pas de transaction ouverte ou d'énormes tables temporaires qui devraient être nettoyées.
J'ai également consulté /server/199974/sp-reset-connection-taking-a-long-time-to-run mais cela n'a pas été utile.
EDIT (2013-12-23): Dans tous les cas, les lectures et les écritures sont égales à 0 et le CPU est presque toujours égal à 0 (seulement deux instances de CPU non nul, toutes deux à 16 ms).
RPC:Starting, RPC:Completedet attendre les types pour une courte période puis regardez à travers les données pour voir ce qui attend les types les SPID rencontrent pendant cette période.