Я искал приложение, использующее базу данных SQL Server, и я вижу много вызовов sp_execute
.
Я не могу найти вызовы sp_prepare
.
Как вы можете проверить все подготовленные операторы SQL в памяти?
Я искал приложение, использующее базу данных SQL Server, и я вижу много вызовов sp_execute
.
Я не могу найти вызовы sp_prepare
.
Как вы можете проверить все подготовленные операторы SQL в памяти?
Я искал способ увидеть фактические операторы SQL, выполняемые sp_execute в SQL Server 2008 R2 Profiler.
Чтобы сделать это, я создал новую трассировку и щелкнул вкладку "Выбор событий". Я выбрал "Показать все события" и проверил Хранимые процедуры > SP: StmtCompleted. Запустив трассировку, я смог увидеть фактические операторы SQL.
Я столкнулся с этой проблемой. SQL Profiler не записывал оператор sp_prepare
, поскольку он произошел до того, как трассировка SQL Profiler начала работать. Различные публикации, которые полагаются на sys.dm_exec_sql_text
, не помогли, потому что я не смог найти правильное значение sql_handle
или plan_handle
для предоставления этой хранимой процедуры.
Я нашел решение от этого сообщения в блоге: в SQL Profiler щелкните флажок " Показать все события" а затем в заголовке Сохраненные процедуры выберите " SP: CacheHit".
В полученном в результате SQL-профайлере вы увидите строку SP: CacheHit ", содержащую запрос кэшированного SQL рядом с вашим RPC: Starting... sp_execute".
Затем вы можете восстановить и повторно выполнить полный оператор SQL в SSMS, если хотите:
exec sp_executesql @stmt=N'{statement from SP:CacheHit}',
@params=N'{parameter declaration from SP:CacheHit}',
@param1={value}, {...parameters from RPC:Starting sp_execute statement}
Следуя вышеприведенному комментарию, я нашел ряд релевантных ссылок:
Как узнать, какая команда sp_execute запущена (без использования Profiler)
Выполняется SP_EXECUTE... что?
У Microsoft есть документация, но это может быть сложная сложность (как всегда). Если указатель плана известен, вы можете использовать это:
sys.dm_exec_sql_text (Transact-SQL)
Это табличная функция. Вы можете увидеть статью в блоге здесь, в которой используются такие табличные функции для извлечения объектных зависимостей для действительного дескриптора скомпилированного (подготовленного) плана.