Както казаха другите отговори, sp_reset_connection
показва, че пулът за връзки се използва повторно. Имайте предвид едно конкретно последствие!
Блог за MSDN на Джими Мейс каза:
sp_reset_connection НЕ нулира нивото на изолация на транзакциите до настройката по подразбиране на сървъра от настройката на предишната връзка.
АКТУАЛИЗИРАНЕ :Започвайки от SQL 2014, за клиентски драйвери с TDS версия 7.3 или по-нова, нивата на изолация на транзакциите ще бъдат нулирани обратно към по подразбиране.
ref:SQL Server:Течове на ниво на изолация в обединените връзки
Ето малко допълнителна информация:
Какво прави sp_reset_connection?
Слоевете на API за достъп до данни като ODBC, OLE-DB и System.Data.SqlClient всички извикват (вътрешните) съхранени процедуриsp_reset_connection при повторно използване на връзка от пул за връзки. Прави това, за да нулира състоянието на връзката, преди да бъде използвана повторно, но никъде не е документирано какво се нулира. Тази статия се опитва да документира частите от връзката, които се нулират.
sp_reset_connection нулира следните аспекти на връзката:
Всички състояния на грешки и числа (като @@error)
Спира всички EC (изпълнителни контексти), които са дъщерни нишки на родител EC, изпълняващи паралелна заявка
Изчаква всички неизпълнени I/Ooperations, които са неизпълнени
Освобождава всички задържани буфери на сървъра от връзката
Отключва всички буферни ресурси, които се използват от връзката
Освобождава цялата разпределена памет, собственост на връзката
Изчиства всякакви работни или временни таблици, които са създадени от връзката
Убива всички глобални курсори, притежавани от връзката
Затваря всички отворени SQL-XML манипулатори, които са отворени
Изтрива всички отворени работни таблици, свързани с SQL-XML
Затваря всички системни таблици
Затваря всички потребителски таблици
Премахва всички временни обекти
Прекратява отворени транзакции
Дефекти от разпределена транзакция при записване
Намалява броя на препратките за потребители в текущата база данни, която освобождава заключванията на споделената база данни
Освобождава придобитите ключалки
Освобождава всички придобити манипулатори
Възстановява всички опции SET до стойностите по подразбиране
Нулира стойността @@rowcount
Нулира стойността @@identity
Нулира всички опции за проследяване на ниво сесия с помощта на dbcc traceon()
Нулира CONTEXT_INFO на
NULL
в SQL Server 2005 и по-нови [ не е част от оригиналната статия ]sp_reset_connection НЯМА да се нулира:
Контекст на сигурността, поради което пулът на връзките съвпада с връзките въз основа на точния низ за връзка
Роли на приложения, въведени с помощта на sp_setapprole, тъй като ролите на приложението изобщо не можеха да бъдат връщани преди SQL Server 2005. Започвайки от SQL Server 2005, ролите на приложения могат да бъдат връщани, но само с допълнителна информация, която не е част от сесията. Преди да затворите връзката, ролите на приложението трябва да бъдат връщани ръчно чрез sp_unsetapprole, като се използва стойност "cookie", която се улавя, когато
sp_setapprole
се изпълнява.
Забележка:Включвам списъка тук, тъй като не искам той да бъде загубен във вечно преходната мрежа.