Как администратору баз данных SQL Server важно отслеживать производительность и статус заданий SQL Server Agent. В некоторых случаях задания могут выполняться дольше ожидаемого или влиять на другие задания, запросы, приложения или пользователей. Хотя Монитор активности заданий в SQL Server Management Studio предоставляет удобный способ отслеживания заданий, иногда требуется автоматизация и оповещения по электронной почте.
В этой статье мы рассмотрим простой SQL-скрипт, который можно использовать для мониторинга активных заданий SQL Server Agent и отправки оповещений по электронной почте, если какое-либо задание выполняется дольше указанного времени.
Обзор скрипта
Скрипт разделен на две части:
- Проверка активных/выполняющихся заданий и их продолжительности
- Отправка оповещений по электронной почте
Первая часть скрипта извлекает информацию о активных заданиях, включая название задания, команду, статус, время начала и продолжительность. Для сбора необходимых данных используются системные представления sysjobs, sysjobactivity и sys.dm_exec_sessions. Продолжительность рассчитывается в часах, минутах и секундах для лучшей читаемости.
Вторая часть скрипта форматирует информацию о заданиях в виде HTML-таблицы и отправляет ее в качестве оповещения по электронной почте. Для отправки электронной почты используется хранимая процедура sp_send_dbmail. Вы можете настроить тему письма, получателей и формат тела письма в соответствии с вашими потребностями.
Использование
Для использования скрипта:
- Выполните весь скрипт или запустите первую часть, чтобы проверить активные задания и просмотреть результаты.
- Если вы хотите получать оповещения по электронной почте о заданиях, выполняющихся дольше указанной продолжительности, выделите и выполните вторую часть скрипта.
Примечание: Убедитесь, что вы настроили почтовую службу базы данных в SQL Server и имеете необходимые разрешения для отправки электронных писем.
Пример
Допустим, у нас есть два примера заданий, выполняющих команду WAITFOR DELAY. Мы хотим отслеживать эти задания и получать оповещения по электронной почте, если они выполняются дольше 30 минут.
После выполнения скрипта мы видим результаты, отображенные на экране:
Название задания Продолжительность
------------------------- ---------------
Пример задания 1 0 часов, 0 минут, 10 секунд
Пример задания 2 0 часов, 0 минут, 20 секунд
Мы также получаем электронное письмо со следующей информацией:
Инстанс SQL Server: ИМЯ_СЕРВЕРА
Отчет сгенерирован: 2022-01-01 12:00:00
Название задания Продолжительность Команда
------------------------- --------------- -------------------------
Пример задания 1 0 часов, 0 минут, 10 секунд WAITFOR DELAY '00:00:10'
Пример задания 2 0 часов, 0 минут, 20 секунд WAITFOR DELAY '00:00:20'
Скрипт можно настроить в соответствии с вашими конкретными потребностями, например, для мониторинга заданий с определенными названиями или продолжительностями. Он служит хорошей отправной точкой для автоматизации мониторинга и оповещения о заданиях SQL Server в вашей среде.
Надеюсь, вы найдете этот скрипт полезным для улучшения управления заданиями SQL Server. Не стесняйтесь изменять и улучшать его в соответствии с вашими требованиями.