У мене є центральна БД, на яку я записую результати роботи на всіх своїх серверах. Я передаю 3 параметри через powerhell в SQL завдання назад до sp на центральному сервері, який підтверджує, що робота повинна працювати в цей час і т. Д. Інформація потім відкривається через SSRS, щоб ми могли побачити збої в роботі / тривалі роботи / & роботи, які не виконувались, але повинні мати (або якщо хтось зіпсував графік).
Для цього в кожне завдання на кожному сервері додано 2 етапи завдання, і я хотів би зменшити скрипт до всього 1 кроку, доданого до кожної роботи.
Але моє питання - один із 3 параметрів, які я проходжу. Мені потрібно отримати виконане завданняID або ім'я роботи з виконуваного завдання, тому мені не доведеться жорстко кодувати параметр імені. Три параметри, які я передаю, - це робота, статус (успіх / невдача), помилка. Я написав написаний сценарій досить просто.
Invoke-sqlcmd -ServerInstance "MYRemoteSYSTEM" -Database remoteDB -Query "exec dbo.JOB_LOG 'JOBNAME / ID', 'Success / FAIL', 'BAD MESSAGE HERE'"
Це записує те, що мені потрібно до столу. Я переглянув msdb.dbo.sp_help_job / msdb.dbo.sp_get_composite_job_info / dbo.xp_sqlagent_enum_jobs /, але жодне з них не гарантує отримання я ідентифікатора або імені правильної роботи, якщо виконуються більше 1 роботи одночасно.
Я навіть намагався переглядати sys.sysprocess, але я думаю, оскільки робота агента є скриптом повноважень, він відображається як ".Net SqlClient Provider Data", тому я не можу відрізати бінарний JOBID від завдань, що відображаються як "SQLAgent - TSQL JobStep (робота 0xF1800243164745429C30474FFD5C990C: крок 1) "--- це я дізнався з посту Денні вишні - спасибі denny-
Будемо дуже вдячні за будь-які ідеї, як захопити виконуючого завдання.
Спасибі,
Кріс