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

Hvad gør sp_reset_connection?

Dataadgang API's lag som ODBC, OLE-DB og SqlClient kalder den (interne) lagrede procedure sp_reset_connection, når en forbindelse fra en forbindelsespulje genbruges. Den gør dette for at nulstille forbindelsens tilstand, før den bliver genbrugt.

Der ser ikke ud til at være officiel dokumentation for, hvilke ting der bliver nulstillet, men her er en uofficiel liste.

sp_reset_connection nulstiller følgende aspekter af en forbindelse:

  • Den nulstiller alle fejltilstande og numre (som @@error)
  • Det stopper alle EC'er (eksekveringskontekster), der er undertråde af en overordnet EC, der udfører en parallel forespørgsel
  • Den vil vente på alle udestående I/O-operationer, der er udestående
  • Det vil frigøre eventuelle tilbageholdte buffere på serveren ved forbindelsen
  • Den låser op for alle bufferressourcer, der bruges af forbindelsen
  • Den frigiver al hukommelse, der er allokeret ejet af forbindelsen
  • Det vil rydde alle arbejds- eller midlertidige tabeller, der er oprettet af forbindelsen
  • Det vil dræbe alle globale markører, der ejes af forbindelsen
  • Det vil lukke alle åbne SQL-XML-håndtag, der er åbne
  • Det vil slette alle åbne SQL-XML-relaterede arbejdstabeller
  • Det vil lukke alle systemtabeller
  • Det vil lukke alle brugertabeller
  • Det vil slette alle midlertidige objekter
  • Det vil afbryde åbne transaktioner
  • Den vil defekte fra en distribueret transaktion, når den bliver tilmeldt
  • Det vil mindske referenceantallet for brugere i den aktuelle database, som frigiver delt databaselås
  • Det vil frigøre erhvervede låse
  • Den vil frigive alle håndtag, der måtte være erhvervet
  • Det vil nulstille alle SET-indstillinger til standardværdierne
  • Det nulstiller @@rowcount-værdien
  • Det nulstiller @@identity-værdien
  • Det vil nulstille sporingsmuligheder på sessionsniveau ved hjælp af dbcc traceon()

sp_reset_connection nulstilles IKKE:

  • Sikkerhedskontekst, hvilket er grunden til, at forbindelsespooling matcher forbindelser baseret på den nøjagtige forbindelsesstreng
  • Hvis du indtastede en applikationsrolle ved hjælp af sp_setapprole, da applikationsroller ikke kan vendes
  • Transaktionsisolationsniveauet


  1. Hvordan tæller man rækker, der opfylder en betingelse i Redshift/Postgres?

  2. Præstationsproblemer:Det første møde

  3. Sådan viser du tabeller i den aktuelle database ved hjælp af PostgreSQL

  4. Hvordan man bruger en fremmed nøgle i oracle