Абсолютно бесплатно, т.е. даром предлагаю вашему вниманию SQL скрипт
BatchJobMonitoring.sql, сделанный под DAX 2009. Он находит джобы (batchJob), которые удовлетворяют первому или второму условию:
- Джоб был фактически запущен, и с тех пор прошло уже 20 минут (StartDateTime > GetDATE() + @ALERTEXECUTIONTIME). Однако он до сих пор еще не закончен (статус Executing), так что вполне возможно, что он завис.
- Джоб был запланирован к запуску, и с тех пор прошло уже 10 минут (OrigStartDateTime > GetDATE() + @ALERTDELAY). Однако он все еще в статусе Waiting, либо Error, либо любом другом кроме Executing или Finished - словом, он или вообще не был запущен в запланированное время, либо - был запущен, но что-то с ним явно не так.
В скрипте учтен сдвиг времени на сервере на час и задействован фильтр по создателю джоба, если вам это неактуально - удалите.
Скрипт запускается с помощью утилиты
sqlcmd, которая сохраняет вывод SQL запроса в текстовый файл
BatchJobMonitoring.txt. Улитита входит в состав SQL сервер, начиная с MSSQL 2005.
Если SQL скриптом найдены подозрительные job-ы, что соответствует отсутствию строки "0 rows affected" в выходном файле - файл отсылается админам с помощью vbs - скрипта
mail_to.vbs.
Во всех трех приложенных скриптах файлах надо заменить плейсхолдеры
**xxx** (имя сервера и бд, email адрес...) на данные Вашей компании. В случае необходимости, добавьте в вызов
sqlcmd логин и пароль SQL.
После того, как оттестировали работу скрипта - добавьте запуск
BatchJobMonitoring.cmd в
Task Sheduler.
В качестве ответной любезности, хотелось бы, чтобы кто-нибудь поделился доработкой по копированию batchJob. Задача - скопировать в один клик настроенный batchJob, со всеми его задачами, параметрами, расписанием и тд. На форуме такого не нашел.