Время начала и окончания хранимой процедуры сервера журнала SQL - PullRequest
4 голосов
/ 20 июля 2011

Я перегружен SQL Server и хочу провести некоторую оптимизацию.

Для этого я хотел бы получить статистику о времени начала и окончания вызванных хранимых процедур.

Есть ли какая-нибудь системная таблица или, может быть, другой элемент, откуда я могу получить эту информацию?

Ответы [ 3 ]

4 голосов
/ 20 июля 2011
SELECT 
    [procedure] = QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
        + '.' + QUOTENAME(OBJECT_NAME([object_id])),
    last_execution_time,
    avg_execution_time = CONVERT(DECIMAL(30,2), total_worker_time * 1.0 / execution_count),
    max_worker_time
FROM sys.dm_exec_procedure_stats
WHERE database_id = DB_ID()
ORDER BY avg_execution_time DESC;
2 голосов
/ 20 июля 2011

Посмотрите на Объекты DM - Sys.dm exec статистика запросов

или из http://www.sqlteam.com/Forums/topic.asp?TOPIC_ID=159011:

... если вы работаете наsql 2008 или выше......

SELECT 

COALESCE(DB_NAME(t.[dbid]),'Unknown') AS [DB Name],
ecp.objtype AS [Object Type],
t.[text] AS [Adhoc Batch or Object Call],
SUBSTRING(t.[text], (qs.[statement_start_offset]/2) + 1,
((CASE qs.[statement_end_offset]
WHEN -1 THEN DATALENGTH(t.[text]) ELSE qs.[statement_end_offset] END
- qs.[statement_start_offset])/2) + 1) AS [Executed Statement]
,qs.[last_execution_time] AS [Last Exec Time]
,qs.[creation_time] AS [Creation Time]

FROM sys.dm_exec_query_stats AS qs
    JOIN sys.dm_exec_cached_plans ecp 
            ON qs.plan_handle = ecp.plan_handle
            CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS t
where
    ecp.objtype = 'Proc'

order by [Last Exec Time] desc
1 голос
/ 20 июля 2011

Вы можете сделать это вручную, создав собственную таблицу системного журнала, вставив новую строку в начале хранимой процедуры и обновив ее в конце примера:

INSERT INTO systemLog (proc,start) VALUES ('My Proc',GETDATE())
SELECT @logid = SCOPE_IDENTITY()

--Do stuff here

UPDATE systemLog SET enddate = GETDATE() WHERE logid = @logid

Преимущество этого заключается в том, чтосохраненный процесс завершается неудачей, он не обновляет системную запись enddate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...