sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad betyder exec sp_reset_connection i SQL Server Profiler?

Som de andre svar sagde, sp_reset_connection angiver, at forbindelsespuljen genbruges. Vær opmærksom på én bestemt konsekvens!

Jimmy Mays' MSDN-blog sagde:

sp_reset_connection nulstiller IKKE transaktionsisolationsniveauet til serverstandarden fra den tidligere forbindelses indstilling.

OPDATERING :Fra og med SQL 2014, for klientdrivere med TDS version 7.3 eller højere, vil transaktionsisolationsniveauerne blive nulstillet til standard.

ref:SQL Server:Isolationsniveau lækker på tværs af poolede forbindelser

Her er nogle yderligere oplysninger:

Hvad gør sp_reset_connection?

Dataadgang API's lag som ODBC,OLE-DB og System.Data.SqlClient kalder alle den (interne) lagrede proceduresp_reset_connection, når en forbindelse fra en forbindelsespulje genbruges. Det gør det for at nulstille forbindelsens tilstand, før den bliver genbrugt, men der er ingen steder dokumenteret, hvad tingene bliver nulstillet. Denne artikel forsøger at dokumentere de dele af forbindelsen, der nulstilles.

sp_reset_connection nulstiller følgende aspekter af en forbindelse:

  • Alle fejltilstande og tal (som @@error)

  • Stopper alle EC'er (eksekveringskontekster), der er undertråde af en overordnet EC, der udfører en parallel forespørgsel

  • Venter på udestående I/Ooperationer, der er udestående

  • Frigør eventuelle tilbageholdte buffere på serveren ved forbindelsen

  • Låser alle bufferressourcer op, der bruges af forbindelsen

  • Frigiver al allokeret hukommelse, der ejes af forbindelsen

  • Rydder alt arbejde eller midlertidige tabeller, der er oprettet af forbindelsen

  • Dræber alle globale markører, der ejes af forbindelsen

  • Lukker alle åbne SQL-XML-håndtag, der er åbne

  • Sletter alle åbne SQL-XML-relaterede arbejdstabeller

  • Lukker alle systemtabeller

  • Lukker alle brugertabeller

  • Sletter alle midlertidige objekter

  • Afbryder åbne transaktioner

  • Defekter fra en distribueret transaktion, når de blev optaget

  • Reducerer referenceantallet for brugere i den aktuelle database, som frigiver delte databaselåse

  • Frigør erhvervede låse

  • Frigiver eventuelle erhvervede håndtag

  • Nulstiller alle SET-indstillinger til standardværdierne

  • Nulstiller @@rowcount-værdien

  • Nulstiller @@identitetsværdien

  • Nulstiller alle sporingsindstillinger på sessionsniveau ved hjælp af dbcc traceon()

  • Nulstiller CONTEXT_INFO til NULL i SQL Server 2005 og nyere [ ikke en del af den originale artikel ]

sp_reset_connection nulstilles IKKE:

  • Sikkerhedskontekst, hvilket er grunden til, at forbindelsespooling matcher forbindelser baseret på den nøjagtige forbindelsesstreng

  • Applikationsroller indtastet ved hjælp af sp_setapprole, da applikationsroller slet ikke kunne vendes tilbage før SQL Server 2005. Fra og med SQL Server 2005 kan approller vendes tilbage, men kun med yderligere oplysninger, der ikke er en del af sessionen. Inden forbindelsen lukkes, skal applikationsroller vendes manuelt tilbage via sp_unsetapprole ved hjælp af en "cookie"-værdi, der fanges, når sp_setapprole udføres.

Bemærk:Jeg medtager listen her, da jeg ikke ønsker, at den skal gå tabt i det evigt forbigående web.



  1. Forringes SQLite-ydeevnen, hvis databasestørrelsen er større end 2 gigabyte?

  2. Sådan går du gennem en afgrænset liste i Oracle PLSQL

  3. Oracle:eksporter en tabel med blobs til en .sql-fil, der kan importeres igen

  4. PostgreSQL fremmednøgle eksisterer ikke, udstedelse af arv?