Vrstvy rozhraní API pro přístup k datům jako ODBC, OLE-DB a SqlClient volají (interní) uloženou proceduru sp_reset_connection při opětovném použití připojení z fondu připojení. Dělá to, aby resetoval stav připojení, než bude znovu použito.
Nezdá se, že by existovala oficiální dokumentace o tom, co se resetovalo, ale zde je neoficiální seznam.
sp_reset_connection obnoví následující aspekty připojení:
- Resetuje všechny chybové stavy a čísla (např. @@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
- Počká na všechny nevyřízené I/O operace, které jsou nevyřízené
- Připojením uvolní všechny zadržené vyrovnávací paměti na serveru
- Odemkne všechny prostředky vyrovnávací paměti, které připojení používá
- Uvolní veškerou paměť alokovanou ve vlastnictví připojení
- Vymaže všechny pracovní nebo dočasné tabulky, které byly vytvořeny připojením
- Zabije všechny globální kurzory vlastněné připojením
- Uzavř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
- Uzavře všechny systémové tabulky
- Uzavře všechny uživatelské tabulky
- Odstraní všechny dočasné objekty
- Přeruší otevřené transakce
- Při zařazení do distribuované transakce dojde k chybě
- Sníží počet odkazů pro uživatele v aktuální databázi, kteří uvolní zámek sdílené databáze
- Uvolní získané zámky
- Uvolní všechny úchyty, které mohly být získány
- Všechny možnosti SET se resetují na výchozí hodnoty
- Obnoví hodnotu @@rowcount
- Obnoví se @@hodnota identity
- Resetuje všechny možnosti trasování na úrovni relace pomocí dbcc traceon()
sp_reset_connection NEBUDE resetován:
- Kontext zabezpečení, což je důvod, proč sdružování připojení odpovídá připojení na základě přesného připojovacího řetězce
- Pokud jste roli aplikace zadali pomocí sp_setapprole, protože role aplikace nelze vrátit zpět
- Úroveň izolace transakcí