Stored procedures 存储过程历史记录和调用它的应用程序?

Stored procedures 存储过程历史记录和调用它的应用程序?,stored-procedures,sql-server-2012,Stored Procedures,Sql Server 2012,我被分配了一批工作来研究我们的200个存储过程,并找出一堆关于它们的不同信息。SQL Server 2012中是否存在提取存储过程执行历史记录的功能?还有没有其他方法可以告诉什么应用程序可能正在调用存储过程?即使是一个IP地址也会有帮助,因为我们有几个服务器可以进行各种处理 你能提供的任何信息都会非常有用。我对SQL中这种类型的东西比较陌生。谢谢 SQL Server 2012中是否存在提取存储过程执行历史记录的功能 您可以使用查找存储过程执行时间加上最耗时的CPU密集型时间 SELECT TO

我被分配了一批工作来研究我们的200个存储过程,并找出一堆关于它们的不同信息。SQL Server 2012中是否存在提取存储过程执行历史记录的功能?还有没有其他方法可以告诉什么应用程序可能正在调用存储过程?即使是一个IP地址也会有帮助,因为我们有几个服务器可以进行各种处理

你能提供的任何信息都会非常有用。我对SQL中这种类型的东西比较陌生。谢谢

SQL Server 2012中是否存在提取存储过程执行历史记录的功能

您可以使用查找存储过程执行时间加上最耗时的CPU密集型时间

SELECT TOP 10 
    d.object_id, d.database_id, 
    OBJECT_NAME(object_id, database_id) 'proc name', 
    d.cached_time, d.last_execution_time, d.total_elapsed_time,
    d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
    d.last_elapsed_time, d.execution_count
FROM
    sys.dm_exec_procedure_stats AS d
ORDER BY
    [total_worker_time] DESC;
还有没有其他方法可以告诉什么应用程序可能正在调用存储过程?即使是一个IP地址也会有帮助,因为我们有几个服务器可以进行各种处理

以上两个问题的答案都是否定的,除非您使用下面的查询实时监视它们。您可以按照预定义的时间间隔使用SQLServer代理运行下面的查询,并在表中捕获输出。此外,请注意,这将为您提供存储过程中的单个语句

select
    r.session_id,
    s.login_name,
    c.client_net_address,
    s.host_name,
    s.program_name,
    st.text
from 
    sys.dm_exec_requests r
inner join 
    sys.dm_exec_sessions s on r.session_id = s.session_id
left join 
    sys.dm_exec_connections c on r.session_id = c.session_id
outer apply 
    sys.dm_exec_sql_text(r.sql_handle) st

谢谢我遇到了一些有帮助的程序统计数据。如何在SQL中找到所有计划存储过程的列表?计划是什么意思?请更新问题计划执行您可以运行过程stats DMV并查看上次运行时间吗