Получить последнюю выполненную команду SQL (T-SQL)
Один из моих разработчиков, работающих над средством ведения журнала на основе триггеров в SQL Server 2008, спросил меня, есть ли команда для получения самой последней выполненной команды SQL в T-SQL. Я думал, что для такой функции существует системная хранимая процедура, но, возможно, я думаю о другом продукте предыдущего десятилетия... онлайн-поиск не дал нам никаких результатов.
У кого-нибудь есть информация о чем-либо подобном?
3 ответа
Обязательно попробуйте это:
SELECT
DMExQryStats.last_execution_time AS [Executed At],
DMExSQLTxt.text AS [Query]
FROM
sys.dm_exec_query_stats AS DMExQryStats
CROSS APPLY
sys.dm_exec_sql_text(DMExQryStats.sql_handle) AS DMExSQLTxt
ORDER BY
DMExQryStats.last_execution_time DESC
он вернет недавно выполненные запросы вместе с датой и временем их выполнения
Ну, процедура, которая извлекает самый последний пакет SQL, может безопасно вернуть себя:)
На серьезной ноте, вы можете посмотреть на sys.dm_exec_query_stats
а также sys.dm_exec_procedure_stats
чтобы увидеть, когда план был выполнен в последний раз, на основе last_execution_time
колонка. Но обратите внимание, что этот метод не является надежным, поскольку он не учитывает планы, которые были исключены из кэша после выполнения.
Что означает "самый последний" в контексте многоядерной машины?
Кроме того, он имеет в виду самое последнее начатое или самое последнее законченное?
Наконец, он должен просто открыть SSMS и посмотреть на Activity Monitor.