Som de andra svaren sa, sp_reset_connection
indikerar att anslutningspoolen återanvänds. Var medveten om en speciell konsekvens!
Jimmy Mays MSDN-blogg sa:
sp_reset_connection återställer INTE transaktionsisoleringsnivån till standardservern från den tidigare anslutningens inställning.
UPPDATERA :Från och med SQL 2014, för klientdrivrutiner med TDS version 7.3 eller högre, kommer transaktionsisoleringsnivåerna att återställas till standardinställningarna.
ref:SQL Server:Isolationsnivå läcker över poolade anslutningar
Här är lite ytterligare information:
Vad gör sp_reset_connection?
Dataåtkomst API:s lager som ODBC,OLE-DB och System.Data.SqlClient anropar alla den (interna) lagrade procedurensp_reset_connection när en anslutning från en anslutningspool återanvänds. Den gör detta för att återställa tillståndet för anslutningen innan den återanvänds, men ingenstans dokumenteras vad som återställs. Den här artikeln försöker dokumentera de delar av anslutningen som återställs.
sp_reset_connection återställer följande aspekter av en anslutning:
Alla feltillstånd och siffror (som @@error)
Stoppar alla EC:er (exekveringskontexter) som är underordnade trådar till en överordnad EC som kör en parallell fråga
Väntar på alla utestående I/Ooperationer som är utestående
Frigör alla lagrade buffertar på servern genom anslutningen
Låser upp alla buffertresurser som används av anslutningen
Frigör allt tilldelat minne som ägs av anslutningen
Rensar allt arbete eller temporära tabeller som skapas av anslutningen
Dödar alla globala markörer som ägs av theconnection
Stänger alla öppna SQL-XML-handtag som är öppna
Tar bort alla öppna SQL-XML-relaterade arbetstabeller
Stänger alla systemtabeller
Stänger alla användartabeller
Tar bort alla tillfälliga objekt
Avbryter öppna transaktioner
Defekter från en distribuerad transaktion vid värvning
Minskar referensantalet för användare i aktuell databas som släpper delade databaslås
Frigör förvärvade lås
Frigör alla förvärvade handtag
Återställer alla SET-alternativ till standardvärdena
Återställer @@rowcount-värdet
Återställer @@identity-värdet
Återställer alla spårningsalternativ på sessionsnivå med dbcc traceon()
Återställer CONTEXT_INFO till
NULL
i SQL Server 2005 och nyare [ inte en del av den ursprungliga artikeln ]sp_reset_connection återställs INTE:
Säkerhetskontext, vilket är anledningen till att anslutningspoolning matchar anslutningar baserat på den exakta anslutningssträngen
Applikationsroller angavs med sp_setapprole, eftersom applikationsroller inte kunde återställas alls före SQL Server 2005. Från och med SQL Server 2005 kan approller återställas, men bara med ytterligare information som inte ingår i sessionen. Innan du stänger anslutningen måste applikationsroller återställas manuellt via sp_unsetapprole med ett "cookie"-värde som fångas när
sp_setapprole
exekveras.
Obs! Jag inkluderar listan här eftersom jag inte vill att den ska försvinna i den ständigt övergående webben.