如何使用SMO查找正在执行的SqlAgent作业的SPID

时间:2008-12-10 15:16:05

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

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

我能想到的最好的方法是将jobid转换为字符串并将jobId子串出EnumProcesses表中的程序字符串(至少在我的系统中,将jobId嵌入到此描述中) )。由于几个原因,它真的很丑陋,其中最重要的是程序描述中的Guid和jobID的guid在字符串表示的前3个部分中切换了它们的字节。呸。

使用SMO有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

使用SMO,而不是我所知道的。

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

答案 1 :(得分:1)

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