Что означает "exec sp reset connection" в SQL Server Profiler?



пытаясь понять, что означает SQL Profiler, испуская "sp_reset_connection".



У меня есть следующая строка "exec sp_reset_connection", за которой следует BatchStarting и завершена,



RPC:Completed       exec sp_reset_connection
SQL:BatchStarting SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]


в основном первая строка "exec sp_reset_connection" означает, что весь процесс (мое соединение было открыто, выбран stmt запущен, затем соединение закрыто и выпущено обратно в пул) просто происходит? Или моя связь все еще находится в открытой стадии.



и, почему sp_reset_connection выполняется до моего собственного оператора select, не должен ли он сбросить после sql пользователя?



Я пытаюсь узнать, есть ли способ узнать более подробно, когда соединение открывается и закрывается?



увидев "exec sp_reset_connection", означает ли это, что мое соединение закрыто?

981   3  

3 ответов:

Как и другие ответы, сказал:sp_reset_connection показывает, что пул соединений используется повторно. Будьте в курсе одного конкретного следствия!

блог Джимми Мэйса MSDN сказал:

процедура sp_reset_connection не сбрасывает уровень изоляции транзакций до сервер по умолчанию от предыдущего настройка соединения.

обновление: начиная с SQL 2014, для драйверов клиентов с TDS версии 7.3 или выше, уровни изоляции транзакций будут сброшены обратно к значению по умолчанию.

ref:SQL Server: утечка уровня изоляции через Объединенные соединения

вот некоторые дополнительные сведения:

что делает процедура sp_reset_connection?

слои API доступа к данным, такие как ODBC, OLE-DB и система.Данные.Sqlclient как все вызов (внутренней) хранимой процедуры sp_reset_connection при повторном использовании подключение из пула подключений. Оно это для сброса состояния подключение до его повторного использования, однако нигде не задокументировано, что все возвращается на круги своя. Эта статья пытается для документирования частей соединение, которое получает сброс.

sp_reset_connection сбрасывает следующие аспекты соединения:

  • все состояния ошибок и числа (как функция @@error)

  • останавливает все EC (контексты выполнения) это дочерние потоки родительской ЕС выполнение параллельного запроса

  • ждет любого выдающегося ввода-вывода операции, которые являются выдающимися

  • освобождает все удерживаемые буферы на сервер по соединению

  • разблокирует все буферные ресурсы которые используются соединением

  • освобождает всю выделенную память принадлежит соединению

  • очищает любые работа или временная таблицы, которые создаются соединение

  • убивает все глобальные курсоры, принадлежащих соединение

  • закрывает все открытые дескрипторы SQL-XML, которые открыты

  • удаляет все открытые рабочие таблицы, связанные с SQL-XML

  • закрывает все системные таблицы

  • закрывает все пользовательские таблицы

  • удаляет все временные объекты

  • прекращает открывать сделки

  • дефекты распределенной транзакции при зачислении

  • уменьшает количество ссылок для пользователей в текущей базе данных, которые освобождает общие блокировки базы данных

  • освобождает блокировок

  • освобождает все приобретенные дескрипторы

  • сбрасывает все установленные параметры по умолчанию значения

  • сбрасывает значение @ @ rowcount

  • сбрасывает значение @ @ identity

  • сброс любой трассировки уровня сеанса параметры с помощью dbcc traceon ()

  • сбрасывает CONTEXT_INFO в NULL в SQL Server 2005 и новее [ не является частью оригинальной статьи]

процедура sp_reset_connection не сбрасывается:

  • контекст безопасности, вот почему пул соединений соответствует соединениям на основе точной строки подключения

  • введенные роли приложения использование процедуры sp_setapprole, так как приложение роли не могут быть отменены

Примечание: я включаю список здесь, так как я не хочу, чтобы он был потерян в постоянно меняющейся сети.

это признак того, что используется пул соединений (что хорошо).

Примечание:

Если в хранимой процедуре или триггере задан уровень изоляции транзакций, то при возврате объекта управления уровень изоляции сбрасывается до уровня, действовавшего при вызове объекта. Например, если вы задаете повторяемое чтение в пакете, а затем пакет вызывает хранимую процедуру, которая устанавливает уровень изоляции в SERIALIZABLE, параметр уровня изоляции возвращается к повторяемому чтению, когда хранимая процедура возвращает управление партия.

http://msdn.microsoft.com/en-us/library/ms173763.aspx

Comments

    Ничего не найдено.