【问题标题】:How to find SPID of a executing SqlAgent job using SMO如何使用 SMO 查找正在执行的 SqlAgent 作业的 SPID
【发布时间】:2008-12-10 15:16:04
【问题描述】:

通过使用 Server.JobServer.jobs 获取作业列表的 SMO 对象,我可以找到每个作业的状态。对于当前正在执行的那些,我想找到它正在执行的 SPID。我还可以使用 Server.EnumProcesses() 获取服务器进程的列表。这给了我当前活动的 SPID 的列表。我想匹配两者。

我能想到的最好的方法是将 jobid 转换为字符串,并将 jobId 从 EnumProcesses 表中的程序字符串中提取出来(至少在我的系统上,该表将 jobId 嵌入到此描述中)。这真的很难看,有几个原因,其中最重要的原因是程序描述中的 Guid 和 jobID 的 guid 在字符串表示的前 3 段中切换了它们的字节。呸。

使用 SMO 是否有更好的方法来做到这一点?

【问题讨论】:

    标签: sql-server smo sql-server-agent


    【解决方案1】:

    使用 SMO,我不知道。

    我已经使用 T/SQL 完成了这项工作。获取 job_id 值并将其转换为 varbinary。这应该与应用程序名称中的值匹配(在“SQL 代理”部分之后)。

    【讨论】:

      【解决方案2】:

      使用 SP_who2 ,在结果“程序”字段中,您将找到 SQLAgent-Jobid。您将从 MSDB 表中的 sysjobs 中获取 jobID。现在您可以获取作业的 sp_id

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-29
        • 1970-01-01
        • 2015-10-05
        • 1970-01-01
        • 2011-10-19
        相关资源
        最近更新 更多