Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво прави sp_reset_connection?

Слоевете на API за достъп до данни като ODBC, OLE-DB и SqlClient извикват (вътрешната) съхранена процедура sp_reset_connection при повторно използване на връзка от пул за връзки. Прави това, за да нулира състоянието на връзката, преди да бъде използвана повторно.

Изглежда няма официална документация за това кои неща се нулират, но ето неофициален списък.

sp_reset_connection нулира следните аспекти на връзката:

  • Възстановява всички състояния на грешки и числа (като @@error)
  • Спира всички EC (изпълнителни контексти), които са дъщерни нишки на видима EC, изпълняващи паралелна заявка
  • Той ще изчака всички неизпълнени I/O операции, които са неизпълнени
  • Ще освободи всички задържани буфери на сървъра от връзката
  • Той ще отключи всички буферни ресурси, които се използват от връзката
  • Той ще освободи цялата памет, разпределена от връзката
  • Ще изчисти всички работни или временни таблици, създадени от връзката
  • Ще убие всички глобални курсори, притежавани от връзката
  • Ще затвори всички отворени SQL-XML манипулатори, които са отворени
  • Ще изтрие всички отворени работни таблици, свързани с SQL-XML
  • Ще затвори всички системни таблици
  • Ще затвори всички потребителски таблици
  • Ще изхвърли всички временни обекти
  • Ще прекъсне отворените транзакции
  • Той ще се отклони от разпределена транзакция, когато бъде включен
  • Това ще намали броя на препратките за потребители в текущата база данни;които освобождават заключването на споделената база данни
  • Ще освободи придобитите ключалки
  • Той ще освободи всички ръкохватки, които може да са били придобити
  • Той ще върне всички SET опции към стойностите по подразбиране
  • Ще нулира стойността @@rowcount
  • Ще нулира стойността @@identity
  • Той ще нулира всички опции за проследяване на ниво сесия с помощта на dbcc traceon()

sp_reset_connection НЯМА да се нулира:

  • Контекст на сигурността, поради което обединяването на връзки съвпада с връзките въз основа на точния низ за връзка
  • Ако сте въвели роля на приложение с помощта на sp_setapprole, тъй като ролите на приложението не могат да бъдат върнати
  • Нивото на изолация на транзакциите


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATEFROMPARTS() Примери в SQL Server (T-SQL)

  2. SET DATEFIRST – Задайте първия ден от седмицата в SQL Server

  3. Обратно сканиране на индекса на SQL Server:разбиране и настройка на производителността

  4. Как да използвате Top with Ties в SQL Server - SQL Server / TSQL урок, част 114

  5. Проектиране на база данни:Изчисляване на салдото по сметката