Как найти SPID выполняемого задания SqlAgent с помощью SMO - PullRequest
1 голос
/ 10 декабря 2008

С помощью объектов SMO, использующих Server.JobServer.jobs для получения списка заданий, я могу узнать состояние каждого задания. Для тех, кто в настоящее время выполняет, я хотел бы найти SPID, на котором он выполняется. Я также могу получить список процессов сервера, используя Server.EnumProcesses (). Это дает мне список активных в настоящее время SPID. Я хочу соответствовать двум.

Лучшее, что я смог придумать, - это преобразовать jobid в строку и вывести из идентификатора строки jobId из строки программы в таблице EnumProcesses (которая, по крайней мере, в моей системе, встраивает jobId в это описание) ). Это действительно ужасно по нескольким причинам, не в последнюю очередь из-за того, что Guid в описании программы и guid для jobID переключают свои байты в первые 3 фрагмента строкового представления. Тьфу.

Есть ли лучший способ сделать это с помощью SMO?

Ответы [ 2 ]

1 голос
/ 07 февраля 2013

Используйте SP_who2, в результате в поле «Программа» вы найдете SQLAgent-Jobid. вы получите jobID из sysjobs из таблицы MSDB. теперь вы можете получить sp_id задания

1 голос
/ 06 января 2009

Использование SMO, не то, что я знаю.

Я сделал это с помощью T / SQL. Возьмите значение job_id и приведите его к varbinary. Это должно соответствовать значению в имени приложения (после части «Агент SQL»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...