Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co robi sp_reset_connection?

Warstwy interfejsu API dostępu do danych, takie jak ODBC, OLE-DB i SqlClient, wywołują (wewnętrzną) procedurę składowaną sp_reset_connection podczas ponownego używania połączenia z puli połączeń. Robi to, aby zresetować stan połączenia, zanim zostanie ponownie użyty.

Wygląda na to, że nie ma oficjalnej dokumentacji na temat resetowania, ale tutaj jest nieoficjalna lista.

sp_reset_connection resetuje następujące aspekty połączenia:

  • Resetuje wszystkie stany i liczby błędów (takie jak @@error)
  • Zatrzymuje wszystkie EC (konteksty wykonania), które są wątkami potomnymi nadrzędnego EC wykonującego równoległe zapytanie
  • Będzie czekać na wszelkie zaległe operacje we/wy, które są zaległe
  • Zwolni wszystkie bufory przechowywane na serwerze przez połączenie
  • Odblokuje wszystkie zasoby bufora używane przez połączenie
  • Zwolni całą pamięć przydzieloną przez połączenie
  • Wyczyści wszystkie tabele robocze lub tymczasowe utworzone przez połączenie
  • Zabije wszystkie globalne kursory będące własnością połączenia
  • Zamknie wszystkie otwarte uchwyty SQL-XML, które są otwarte
  • Usuwa wszystkie otwarte tabele robocze związane z SQL-XML
  • Zamknie wszystkie tabele systemowe
  • Zamknie wszystkie tabele użytkowników
  • Porzuci wszystkie tymczasowe obiekty
  • Przerwie otwarte transakcje
  • Zniknie z transakcji rozproszonej, gdy zostanie zarejestrowany
  • Spowoduje to zmniejszenie liczby odwołań dla użytkowników w bieżącej bazie danych; co zwalnia współdzieloną blokadę bazy danych
  • Zwolni nabyte blokady
  • Zwolni wszelkie uchwyty, które mogły zostać nabyte
  • Zresetuje wszystkie opcje SET do wartości domyślnych
  • Zresetuje wartość @@rowcount
  • Zresetuje wartość @@identity
  • Zresetuje wszystkie opcje śledzenia na poziomie sesji za pomocą dbcc traceon()

sp_reset_connection NIE zostanie zresetowany:

  • Kontekst bezpieczeństwa, dlatego pula połączeń dopasowuje połączenia na podstawie dokładnych parametrów połączenia
  • Jeśli wprowadziłeś rolę aplikacji za pomocą sp_setapprol, ponieważ role aplikacji nie mogą być cofnięte
  • Poziom izolacji transakcji


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz tabelę w SQL Server 2017

  2. Jak połączyć się z wystąpieniem programu SQL Server przy użyciu uwierzytelniania systemu Windows lub uwierzytelniania programu SQL Server — samouczek programu SQL Server/T-SQL, część 3

  3. Jak dołączyć do pierwszego rzędu

  4. Jak utworzyć pole logiczne tak/nie na serwerze SQL?

  5. Zapobieganie wstrzykiwaniu SQL w ASP.Net