Comment find SPID d'un travail SqlAgent en cours d'exécution à l'aide de SMO

Avec les objects SMO utilisant Server.JobServer.jobs pour get une list de travaux, je peux find l'état de chaque travail. Pour ceux qui sont en cours d'exécution je voudrais find le SPID sur lequel il s'exécute. Je peux également get une list des process du server en utilisant Server.EnumProcesses (). Cela me donne une list des SPID actuellement actifs. Je veux faire correspondre les deux.

Le mieux que j'ai pu find est de convertir le jobid en une string et de soustraire le jobId de la string du programme dans la table EnumProcesses (qui, au less sur mon système, incorpore le jobId dans cette description). C'est vraiment moche pour deux raisons, et pas la moindre: le Guid dans la description du programme et le guid pour jobID ont leurs octets changés dans les trois premiers morceaux de la représentation sous forme de string. Yuck.

Y a-t-il une meilleure façon de le faire en utilisant SMO?

En utilisant SMO, pas que je sache.

Je l'ai fait en utilisant T / SQL. Prenez la valeur job_id et affectez-la à varbinary. Cela devrait alors correspondre à la valeur dans le nom de l'application (après la partie "SQL Agent").

Utilisez SP_who2, dans le champ "Program", vous findez SQLAgent-Jobid. vous obtiendrez le jobID de sysjobs à partir de la table MSDB. maintenant vous pouvez get le sp_id du travail