找出最近运行的存储过程列表,包括开始和结束时间

时间:2014-02-18 14:33:04

标签: sql-server database

有没有人知道sql server中是否有内置命令来查找最近运行的存储过程列表(比如说在最近两个小时内)。 我在网上尝试了不同的文章,但没有一个有令人满意的答案,或者我们必须编写自己的自定义查询才能实现这一目标>

由于

2 个答案:

答案 0 :(得分:2)

此查询可能对您有所帮助。

SELECT DatabaseName = DB_NAME(st.dbid)
    , SchemaName = OBJECT_SCHEMA_NAME(st.objectid, dbid)
    , StoredProcedure = OBJECT_NAME(st.objectid, dbid)
    , cp.last_execution_Time
FROM sys.dm_exec_query_stats cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
WHERE DB_NAME(st.dbid) IS NOT NULL
    AND cp.last_execution_Time >= '2014-02-19 10:14:45.590'

答案 1 :(得分:1)

您可以创建一个过程日志表,并在每次执行过程时创建CREATE PROCEDURE。

create table proc_log
(
id int IDENTITY,
proc_name varchar(100),
start_time time(7),
end_time time(7)
)

create PROCEDURE proc_log_insert(@proce_name varchar(100),@s_time time(7),@e_time time(7))
AS
BEGIN
    INSERT INTO PROC_LOG(PROC_NAME,START_TIME,END_TIME)
    VALUES(@PROC_NAME,@START_tIME,@END_TIME)
END

CREATE PROCEDURE SAMPLE (...)
AS
DECLARE @S_TIME=CAST(GETDATE() AS TIME(7))
DECLARE @E_TIME
.
.
.
.
.
.
SET @E_TIME=CAST(GETDATE() AS TIME(7))
EXEC PROC_LOG_INSERT 'SAMPLE',@S_TIME,@E_TIME
END