【问题标题】:How do I list current running Stored Procedures with SMO?如何使用 SMO 列出当前正在运行的存储过程?
【发布时间】:2013-11-23 22:00:26
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 Server 对象上的 EnumProccesses 方法返回它。不过,我真的觉得这是“当你有一把锤子时,一切看起来都像钉子”。也就是说,您将能够针对 sys.dm_exec_requests 等系统视图使用原始 T-SQL 做得更好

    【讨论】:

      【解决方案2】:

      我同意 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-22
        • 1970-01-01
        • 1970-01-01
        • 2020-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多