Хранимая процедура SQL Server самопрофилируется на время выполнения?

Мне нужно найти и сохранить в таблице время выполнения процедуры каждый раз, когда она выполняется.

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

Любые другие лучшие методы для записи времени выполнения процедуры, кроме использования Profiler и фильтрации тысяч тысяч записей?

Спасибо

1 ответ

Вы можете просто использовать два параметра и инициализировать один в начале процедуры, а другой - в конце процедуры.

create procedure myproc as
begin
    declare @start_time datetime = getdate()

    (rest of procedure code)

    declare @end_time datetime = getdate()
end

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

INSERT INTO Proc_Exec_Log (procedure_name, start_time, end_time) 
VALUES ('myproc', @start_time, @end_time);
Другие вопросы по тегам