sql >> Databáze >  >> RDS >> Sqlserver

Co znamená exec sp_reset_connection v SQL Server Profiler?

Jak bylo uvedeno v ostatních odpovědích, sp_reset_connection označuje, že fond připojení je znovu používán. Buďte si vědomi jednoho konkrétního důsledku!

Blog MSDN Jimmyho Mayse řekl:

sp_reset_connection NERESETUJE úroveň izolace transakcí na výchozí nastavení serveru z nastavení předchozího připojení.

AKTUALIZACE :Počínaje SQL 2014 budou pro klientské ovladače s TDS verze 7.3 nebo vyšší úrovně izolace transakcí resetovány zpět na výchozí.

ref:SQL Server:Únik úrovně izolace mezi sdruženými připojeními

Zde jsou některé další informace:

Co dělá sp_reset_connection?

Vrstvy rozhraní API pro přístup k datům, jako je ODBC, OLE-DB a System.Data.SqlClient, při opětovném použití připojení z fondu připojení volají (interní) uložené proceduryp_reset_connection. Dělá to pro resetování stavu připojení před jeho opětovným použitím, ale nikde není zdokumentováno, co se resetuje. Tento článek se pokouší zdokumentovat části připojení, které se resetují.

sp_reset_connection resetuje následující aspekty připojení:

  • Všechny chybové stavy a čísla (jako @@chyba)

  • Zastaví všechny EC (kontexty provádění), které jsou podřízenými vlákny nadřazeného EC provádějícího paralelní dotaz

  • Čeká na všechny nevyřízené I/O operace

  • Uvolní všechny zadržené vyrovnávací paměti na serveru připojením

  • Odemkne všechny prostředky vyrovnávací paměti, které používá připojení

  • Uvolní veškerou přidělenou paměť vlastněnou připojením

  • Vymaže všechny práce nebo dočasné tabulky, které byly vytvořeny připojením

  • Zabije všechny globální kurzory vlastněné theconnection

  • Zavře všechny otevřené popisovače SQL-XML, které jsou otevřené

  • Odstraní všechny otevřené pracovní tabulky související s SQL-XML

  • Zavře všechny systémové tabulky

  • Zavře všechny uživatelské tabulky

  • Zahodí všechny dočasné objekty

  • Zruší otevřené transakce

  • Vady z distribuované transakce při zařazení

  • Sníží počet referencí pro uživatele v aktuální databázi, která uvolní zámky sdílené databáze

  • Uvolní získané zámky

  • Uvolní všechny získané úchyty

  • Obnoví všechny možnosti SET na výchozí hodnoty

  • Resetuje hodnotu @@rowcount

  • Resetuje hodnotu @@identity

  • Resetuje všechny možnosti sledování na úrovni relace pomocí dbcc traceon()

  • Resetuje CONTEXT_INFO na NULL v SQL Server 2005 a novějších [ není součástí původního článku ]

sp_reset_connection NEBUDE resetováno:

  • Kontext zabezpečení, což je důvod, proč sdružování připojení odpovídá připojením založeným na přesném řetězci připojení

  • Role aplikací zadané pomocí sp_setapprole, protože role aplikací nebylo možné před SQL Server 2005 vůbec vrátit. Počínaje SQL Serverem 2005 lze role aplikací vrátit zpět, ale pouze s dalšími informacemi, které nejsou součástí relace. Před uzavřením připojení je třeba role aplikací ručně vrátit zpět prostřednictvím sp_unsetapprole pomocí hodnoty „cookie“, která je zachycena při sp_setapprole se provede.

Poznámka:Seznam uvádím zde, protože nechci, aby se ztratil ve stále přechodné síti.



  1. Blockchain:Co to je, jak to funguje a co to znamená pro velká data

  2. CHAR() Příklady v MySQL

  3. Jak vytvářet vztahy v MySQL

  4. Příklady MAKETIME() – MySQL