sql >> Database >  >> RDS >> Sqlserver

Wat betekent exec sp_reset_connection in SQL Server Profiler?

Zoals de andere antwoorden zeiden, sp_reset_connection geeft aan dat de verbindingspool opnieuw wordt gebruikt. Let op een bepaald gevolg!

MSDN-blog van Jimmy Mays zei:

sp_reset_connection reset het transactie-isolatieniveau NIET naar de serverstandaard van de instelling van de vorige verbinding.

UPDATE :Vanaf SQL 2014 worden voor clientstuurprogramma's met TDS-versie 7.3 of hoger de transactie-isolatieniveaus teruggezet naar de standaardwaarden.

ref:SQL Server:Isolatieniveau lekken over gepoolde verbindingen

Hier is wat aanvullende informatie:

Wat doet sp_reset_connection?

Data access API's lagen zoals ODBC,OLE-DB en System.Data.SqlClient roepen allemaal de (interne) opgeslagen proceduresp_reset_connection op bij hergebruik van een connectie uit een connectie pool. Het doet dit om de status van de verbinding te resetten voordat deze opnieuw wordt gebruikt, maar nergens is gedocumenteerd wat er wordt gereset. Dit artikel beschrijft de delen van de verbinding die gereset worden.

sp_reset_connection reset de volgende aspecten van een verbinding:

  • Alle foutstatussen en nummers (zoals @@error)

  • Stopt alle EC's (uitvoeringscontexten) die onderliggende threads zijn van een bovenliggende EC die een parallelle query uitvoert

  • Wacht op openstaande I/O-operaties die uitstaan

  • Maakt alle vastgehouden buffers op de server vrij door de verbinding

  • Ontgrendelt alle bufferbronnen die door de verbinding worden gebruikt

  • Geeft al het toegewezen geheugen vrij dat eigendom is van de verbinding

  • Wist alle werk- of tijdelijke tabellen die zijn gemaakt door de verbinding

  • Doodt alle globale cursors die eigendom zijn van theconnection

  • Sluit alle open SQL-XML-handles die open zijn

  • Verwijdert alle open SQL-XML-gerelateerde werktabellen

  • Sluit alle systeemtabellen

  • Sluit alle gebruikerstabellen

  • Laat alle tijdelijke objecten vallen

  • Breekt openstaande transacties af

  • Defecten van een gedistribueerde transactie bij inschrijving

  • Verlaagt het aantal referenties voor gebruikers in de huidige database die gedeelde databasevergrendelingen vrijgeeft

  • Maakt verworven sloten vrij

  • Geeft alle verworven handvatten vrij

  • Zet alle SET-opties terug naar de standaardwaarden

  • Reset de @@rowcount-waarde

  • Reset de @@identity-waarde

  • Herstelt alle traceeropties op sessieniveau met dbcc traceon()

  • Zet CONTEXT_INFO terug op NULL in SQL Server 2005 en nieuwer [ maakt geen deel uit van het originele artikel ]

sp_reset_connection wordt NIET gereset:

  • Beveiligingscontext, daarom matchen pooling verbindingen op basis van de exacte verbindingsreeks

  • Applicatierollen zijn ingevoerd met sp_setapprole, aangezien applicatierollen vóór SQL Server 2005 helemaal niet konden worden teruggedraaid. Vanaf SQL Server 2005 kunnen app-rollen worden teruggedraaid, maar alleen met aanvullende informatie die geen deel uitmaakt van de sessie. Voordat de verbinding wordt verbroken, moeten applicatierollen handmatig worden teruggezet via sp_unsetapprole met behulp van een "cookie" -waarde die wordt vastgelegd wanneer sp_setapprole wordt uitgevoerd.

Opmerking:ik voeg de lijst hier toe omdat ik niet wil dat deze verloren gaat in het altijd tijdelijke web.



  1. Hoe unsigned int / long-types gebruiken met Entity Framework?

  2. Bekijk informatie met de VIEWS Information Schema View in SQL Server

  3. Postgresql:Hoe selecteer ik de top n procent (%) items uit elke groep/categorie

  4. Vergrendelgranulariteit in MySQL begrijpen