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.