Хранимая процедура SQL Server самостоятельно профилируется на время выполнения? - PullRequest
0 голосов
/ 27 августа 2018

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

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

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

Спасибо

1 Ответ

0 голосов
/ 27 августа 2018

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

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);
...