如何使用SMO列出当前运行的存储过程?

时间:2013-11-23 22:00:27

标签: c# sql-server sql-server-2008 smo

我正在使用C#,SQL Server 2008和SQL管理对象,我需要知道是否有办法使用SMO / C#获取当前正在执行的存储过程。我有一些长期运行的存储过程,我需要通过确定它们是空闲还是执行来监视它们的当前状态。这可以通过SMO完成吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:1)

您可以使用Server对象上的EnumProccesses方法重新登录它。我真的觉得这是“当你有一把锤子,一切看起来像钉子”的情况。也就是说,对于sys.dm_exec_requests等系统视图,你可以使用原始T-SQL做得更好。

答案 1 :(得分:0)

我同意Ben Thul,来自here的以下SQL语句应该完成这项工作(虽然我还没有测试过):

SELECT  requests.session_id, 
    requests.status, 
    requests.command, 
    requests.statement_start_offset,
    requests.statement_end_offset,
    requests.total_elapsed_time,
    details.text
FROM    sys.dm_exec_requests requests
CROSS APPLY sys.dm_exec_sql_text (requests.plan_handle) details
WHERE   requests.session_id > 50
ORDER BY total_elapsed_time DESC