Что значит "старпома" СП "сброс соединения" в Профилировщике SQL сервер?
попытка понять, что означает 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", означает ли это, что мое соединение закрыто?
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 (контексты выполнения) это дочерние потоки родительского EC выполнение параллельного запроса
ждет любого выдающего I / O операции, которые являются выдающимися
освобождает все сдержанные буферы на сервер по соединению
разблокирует все буферные ресурсы которые используются соединением
освобождает всю выделенную память принадлежит соединению
очищает любые работа или временное таблицы, созданные связи
убивает все глобальные курсоры, принадлежащих связи
закрывает все открытые дескрипторы SQL-XML, которые открыты
удаляет все открытые рабочие таблицы, связанные с SQL-XML
закрывает все системные таблицы
закрывает все пользовательские таблицы
удаляет все временные объекты
прекращает открывать сделки
дефекты распределенной транзакции при зачислении
уменьшает количество ссылок для пользователей в текущей базе данных, которые выпускает общие блокировки базы данных
освобождает блокировок
освобождает любые приобретенные дескрипторы
сбрасывает все установленные параметры по умолчанию значения
сбрасывает значение @@rowcount
сбрасывает значение @ @ identity
сбрасывает трассировку любого уровня сеанса параметры с помощью dbcc traceon ()
сбрасывает CONTEXT_INFO в
NULL
в SQL Server 2005 и новее [ не входит в оригинальную статью ]sp_reset_connection не сбросит:
контекст безопасности, поэтому объединение соединений соответствует соединениям на основе точной строки подключения
роли приложений вошли использование sp_setapprole, так как приложение роли не могут быть отменены
Примечание: я включаю список здесь, поскольку я не хочу, чтобы он был потерян в постоянно переходной сети.
Примечание:
Если задать уровень изоляции транзакции в хранимой процедуре или триггере, то при возврате объекта control уровень изоляции сбрасывается до уровня, действовавшего при вызове объекта. Например, если задать REPEATABLE READ в пакете и пакет затем вызывает хранимую процедуру, которая задает уровень изоляции SERIALIZABLE, параметр уровня изоляции возвращается к REPEATABLE READ, когда хранимая процедура возвращает элемент управления партия.