В нашем приложении мы запускаем множество хранимых процедур. Многие из них предназначены для пользовательских отчетов, многие из которых больше не используются. Кто-нибудь знает о запросе, который мы могли бы выполнить в представлении системы в SQL Server 2005, который сообщил нам о последней дате, когда была выполнена хранимая процедура?Дата последнего запуска хранимой процедуры в SQL Server
ответ
В двух словах, нет.
Однако есть «приятные» вещи, которые вы можете сделать.
- Выполнить профайлер след, скажем, имя, сохраненное прок
- добавить строку каждый процедурный (создать Tabel конечно)
- "
INSERT dbo.SPCall (What, When) VALUES (OBJECT_NAME(@@PROCID), GETDATE()
"
- "
- Продлить 2 с продолжительность тоже
Есть «забавные» вещи, которые вы можете сделать:
- Удалите его, узнать, кто называет
- Удалить права, видеть, кто звонит
- Добавить
RAISERROR ('Warning: pwn3d: call admin', 16, 1)
, узнать, кто называет - Добавить
WAITFOR DELAY '00:01:00'
, узнать, кто называет
Вы получаете идею. Проверенный и проверенный метод «видеть, кто звонит», поддерживает ИТ-поддержку.
Если отчеты являются службами Reporting Services, то вы можете mine the RS database для запуска отчета, если вы можете сопоставить код для отчета DataSet.
Вы все равно не могли полагаться на DMV, потому что они перезагружены перезагрузкой SQL Server. Query cache/locks являются временными и не сохраняются в течение какого-либо периода времени.
Код ниже должен сделать трюк (> = 2008)
SELECT o.name,
ps.last_execution_time
FROM sys.dm_exec_procedure_stats ps
INNER JOIN
sys.objects o
ON ps.object_id = o.object_id
WHERE DB_NAME(ps.database_id) = ''
ORDER BY
ps.last_execution_time DESC
Редактировать 1: Пожалуйста, примите к сведению советы Джефф Modens ниже.
работает только на SQL 2008 и выше – Kodak
+1 очень полезный скрипт, спасибо, небольшая коррекция, во второй строке, которую вы пропустили a 'e', это должно быть 'a.last_execution_time', – AmmarR
Спасибо и +1 за это. очень полезный DMV. Можем ли мы также получить входящие в процедуру параметры ввода? –
О, будьте осторожны! Все, что блестит, не золото! Все представления и функции «stats» dm имеют проблему для этого типа вещей. Они работают только против того, что находится в кеше, и время жизни того, что находится в кеше, может измеряться в считанные минуты. Если бы вы использовали такую вещь, чтобы определить, какие SP-кандидаты являются кандидатами на отброс, вы можете оказаться в мире обид, когда вы удаляете SP, которые использовались всего несколько минут назад.
Следующие выдержки из книги онлайн для данных взглядов дх ...
sys.dm_exec_procedure_stats Возвращает совокупную статистику производительности для кэшированных хранимых процедур. Представление содержит одну строку для каждой хранимой процедуры, а время жизни строки до тех пор, пока хранимая процедура остается кешированной. Когда хранимая процедура удаляется из кеша, соответствующая строка исключается из этого представления.
sys.dm_exec_query_stats В представлении содержится одна строка для каждого запроса в кэшированном плане, а время жизни строк привязывается к самому плану. Когда план удаляется из кеша, соответствующие строки исключаются из этого представления.
Так было бы справедливо сказать, что если запись присутствует в запросе, предлагаемом @Pixelated, то последнее время выполнения является точным, но если запись отсутствует, вы не можете делать никаких предположений о ее последнем времени выполнения? –
Приносим извинения за крайне поздний ответ. В последнее время я не был здесь. То, что вы указали выше, является правильным. –
Это прекрасно работает на 2005 (если план находится в кэше)
USE YourDb;
SELECT qt.[text] AS [SP Name],
qs.last_execution_time,
qs.execution_count AS [Execution Count]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.dbid = DB_ID()
AND objectid = OBJECT_ID('YourProc')
Я использую это:
use YourDB;
SELECT
object_name(object_id),
last_execution_time,
last_elapsed_time,
execution_count
FROM
sys.dm_exec_procedure_stats ps
where
lower(object_name(object_id)) like 'Appl-Name%'
order by 1
формат – HaveNoDisplayName
sys.dm_exec_procedure_stats содержит информацию о функциях выполнения, ограничений и процедуры и т. д. Но срок жизни строки имеет предел. В тот момент, когда план выполнения будет удален из кеша, запись исчезнет.
Use [yourDatabaseName]
GO
SELECT
SCHEMA_NAME(sysobject.schema_id),
OBJECT_NAME(stats.object_id),
stats.last_execution_time
FROM
sys.dm_exec_procedure_stats stats
INNER JOIN sys.objects sysobject ON sysobject.object_id = stats.object_id
WHERE
sysobject.type = 'P'
ORDER BY
stats.last_execution_time DESC
Это даст вам список недавно выполненных процедур.
Если вы хотите, чтобы проверить, если perticular хранимая процедура выполняется недавно
SELECT
SCHEMA_NAME(sysobject.schema_id),
OBJECT_NAME(stats.object_id),
stats.last_execution_time
FROM
sys.dm_exec_procedure_stats stats
INNER JOIN sys.objects sysobject ON sysobject.object_id = stats.object_id
WHERE
sysobject.type = 'P'
and (sysobject.object_id = object_id('schemaname.procedurename')
OR sysobject.name = 'procedurename')
ORDER BY
stats.last_execution_time DESC
- 1. Дата хранимой процедуры SQL Server
- 2. Задача хранимой процедуры SQL Server
- 3. Необходимость запуска хранимой процедуры SQL Server в начале отчета ssrs
- 4. SQL Server: Создание хранимой процедуры
- 5. хранимой процедуры параметров SQL Server
- 6. Значение хранимой процедуры SQL Server
- 7. SQL Server: транзакция хранимой процедуры
- 8. Ускорение хранимой процедуры SQL Server
- 9. Вопрос хранимой процедуры SQL Server
- 10. Параметры хранимой процедуры SQL Server
- 11. Сбой хранимой процедуры SQL Server?
- 12. Триггер для запуска хранимой процедуры SQL Server 2008
- 13. Sql Server 2000 создает запланированное задание для запуска хранимой процедуры
- 14. Вызов хранимой процедуры из другой хранимой процедуры SQL Server
- 15. T-SQL дата хранимой процедуры переменной
- 16. Ошибка в SQL Server 2005 хранимой процедуры
- 17. Создание хранимой процедуры SQL Server в VB.NET
- 18. Параметры вывода хранимой процедуры в SQL Server
- 19. Ошибка SQL Server в параметрах хранимой процедуры
- 20. Преобразование хранимой процедуры SQL Server в oracle
- 21. Отладка хранимой процедуры в SQL Server 2008
- 22. Дополнительные параметры хранимой процедуры в SQL Server
- 23. Длина хранимой процедуры в SQL Server
- 24. Выполнение хранимой процедуры в SQL Server
- 25. Получить текст хранимой процедуры в SQL Server
- 26. Выполнение одинаковой хранимой процедуры в SQL Server
- 27. Ограничение значений хранимой процедуры в SQL Server
- 28. параметризованная ИНЕКЕ в SQL Server хранимой процедуры
- 29. Запуск хранимой процедуры SQL Server из Excel
- 30. Возвращаемые значения из хранимой процедуры SQL Server?
Это большой вопрос. – NotMe
У нас есть все наши журналы Sprocs, которые они называли. Все наши Sprocs имеют параметр для идентификатора сеанса, который входит в журнал (вместе с любой поднятой ошибкой и продолжительностью). Нам было удобно (до сих пор!) С накладными расходами, и это помогло с отладкой/отчетностью управления часто – Kristen