如何查看存储过程上次运行的时间

Bra*_*ore 5 sql-server-2008

我想查看服务器上每个数据库的所有存储过程的列表,以及上次运行该存储过程的时间。我对 SQL 非常擅长,但我不知道如何查看 sql 保持的这样的统计数据,所以我很感激找到这些信息的一些帮助。

编辑:

从我得到的答案来看,这听起来不像我想象的那样可能。我在想,它可以像查看上次访问表的时间一样完成:

select  t.name, user_seeks, user_scans, user_lookups, user_updates, 
        last_user_seek, last_user_scan, last_user_lookup, last_user_update

from    sys.dm_db_index_usage_stats i JOIN
        sys.tables t ON (t.object_id = i.object_id)

where   database_id = db_id()
Run Code Online (Sandbox Code Playgroud)

上述脚本是从http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated-for-any-table/的评论中窃取的。

squ*_*man 3

下面是一个小脚本,它将列出服务器实例上所有数据库中的所有用户存储过程(即那些未随 SQL Server 一起提供或不是系统存储过程的存储过程):

CREATE TABLE #ProcTable (
    DbName sysname,
    ProcName sysname
)

DECLARE @command1 NVARCHAR(1000)

SET @command1 = 'USE [?];INSERT #ProcTable 
SELECT ''[?]'',Name
FROM sys.all_objects
WHERE TYPE=''p''
AND is_ms_shipped=0'

EXEC sp_msforeachdb @command1

SELECT * FROM #ProcTable 
ORDER BY DbName,ProcName

DROP TABLE #ProcTable 
Run Code Online (Sandbox Code Playgroud)

如果您没有运行捕获 exec 事件的跟踪(并且没有运行默认跟踪),那么您必须有一个应用程序级审核机制来捕获存储过程的运行。如果你没有其中任何一个,那么你将无法及时返回以查看进程何时运行。