Published on

July 27, 2023

Автоматизация мониторинга и оповещения о заданиях SQL Server

Как администратору баз данных SQL Server важно отслеживать производительность и статус заданий SQL Server Agent. В некоторых случаях задания могут выполняться дольше ожидаемого или влиять на другие задания, запросы, приложения или пользователей. Хотя Монитор активности заданий в SQL Server Management Studio предоставляет удобный способ отслеживания заданий, иногда требуется автоматизация и оповещения по электронной почте.

В этой статье мы рассмотрим простой SQL-скрипт, который можно использовать для мониторинга активных заданий SQL Server Agent и отправки оповещений по электронной почте, если какое-либо задание выполняется дольше указанного времени.

Обзор скрипта

Скрипт разделен на две части:

  1. Проверка активных/выполняющихся заданий и их продолжительности
  2. Отправка оповещений по электронной почте

Первая часть скрипта извлекает информацию о активных заданиях, включая название задания, команду, статус, время начала и продолжительность. Для сбора необходимых данных используются системные представления sysjobs, sysjobactivity и sys.dm_exec_sessions. Продолжительность рассчитывается в часах, минутах и секундах для лучшей читаемости.

Вторая часть скрипта форматирует информацию о заданиях в виде HTML-таблицы и отправляет ее в качестве оповещения по электронной почте. Для отправки электронной почты используется хранимая процедура sp_send_dbmail. Вы можете настроить тему письма, получателей и формат тела письма в соответствии с вашими потребностями.

Использование

Для использования скрипта:

  1. Выполните весь скрипт или запустите первую часть, чтобы проверить активные задания и просмотреть результаты.
  2. Если вы хотите получать оповещения по электронной почте о заданиях, выполняющихся дольше указанной продолжительности, выделите и выполните вторую часть скрипта.

Примечание: Убедитесь, что вы настроили почтовую службу базы данных в 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. Не стесняйтесь изменять и улучшать его в соответствии с вашими требованиями.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.