Длительно выполняемые задания

Microsoft.SQLServer.Windows.Monitor.Agent.LongRunningJobs (UnitMonitor)

Этот монитор проверяет наличие длительных заданий агента SQL.
Обратите внимание, что служба агента SQL Server не поддерживается ни в одном из выпусков SQL Server Express; отсутствует подходящий объект для обнаружения. По умолчанию этот монитор отключен. Для его включения используйте переопределения.

Knowledge Base article:

Сводка

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

По умолчанию этот монитор не отслеживает задания с типом расписания "Запускать автоматически при запуске агента SQL Server", так как они часто выполняются до остановки агента SQL (то есть непрерывно) и такое поведение нормально для них. Обычно такие задания используются при репликации SQL Server. Но в некоторых случаях задания с типом расписания "Запускать автоматически при запуске агента SQL Server" могут выполняться относительно недолго. Чтобы отслеживать эти задания, переопределите параметр "Включенные непрерывно выполняющиеся задания" с помощью списка имен заданий через запятую. Имя задания в списке должно соответствовать требованиям одного из следующих классов идентификаторов:

1) Регулярные:

2) Ограниченные:

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

Причины

Неисправное состояние вызвано тем, что задание агента SQL Server выполнялось дольше заданного порога. Это может означать проблему с заданием.

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

Чтобы определить задание, вызвавшее предупреждение или состояние ошибки, ознакомьтесь с данными контекста для изменения состояния или оповещения.

Разрешения

С помощью SQL Server Management Studio проверьте, какие задания выполняются. Если эти задания выполняются дольше необходимого, исследуйте их, чтобы узнать причину.

Используйте процедуру sp_help_jobactivity, чтобы просмотреть сведения о выполняющихся сейчас заданиях.

Другие способы, если ожидается длительное выполнение некоторых заданий агента:

Переопределяемые параметры

Имя

Описание

Значение по умолчанию

Приоритет предупреждения

Определение приоритета оповещений.

Обычный

Серьезность предупреждения

Определяет серьезность предупреждения.

MatchMonitorHealth

Критическое пороговое значение (мин)

Монитор изменит свое состояние на критическое, если значение превысит указанное пороговое значение. Если значение находится между этим пороговым значением и пороговым значением предупреждения (включительно), то монитор будет находиться в состоянии предупреждения.

120

Включено

Включает или отключает рабочий процесс.

Нет

Создает предупреждения

Определяет, создается ли предупреждение рабочим процессом.

Да

Включены непрерывно выполняемые задания

Некоторые задания агента SQL могут выполняться бесконечно (до остановки агента). Обычно для них задается тип расписания "Запускать автоматически при запуске агента SQL Server". Такие задания часто используются при репликации SQL Server. Эти задания формируют ложные оповещения, и по умолчанию монитор не учитывает их. Но возможны исключения, когда такие задания выполняются в течение короткого времени. Для отслеживания таких заданий определите список названий заданий, разделенных запятыми.

 

Интервал (в секундах)

Повторяющийся интервал времени в секундах, в который следует запустить рабочий процесс.

600

Время синхронизации

Время синхронизации указывается в 24-часовом формате и может быть опущено.

 

Время ожидания (в секундах)

Указывает время, в течение которого может выполняться рабочий процесс, прежде чем он будет закрыт или завершится сбоем.

300

Время ожидания для подключения к базе данных (секунды)

Рабочий процесс завершится ошибкой и зарегистрирует событие, если он не сможет получить доступ к базе данных за указанный промежуток времени.

15

Пороговое значение предупреждения (мин)

Пороговое значение предупреждения. Превышение этого порогового значения приведет к переключению монитора по крайней мере в состояние предупреждения.

60

Element properties:

TargetMicrosoft.SQLServer.Windows.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL в Windows: длительно выполняемые задания
Имеются длительно выполняемые задания агента в экземпляре SQL {1} на компьютере {0}. Это может означать проблему с одним заданием или несколькими.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Agent" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Agent.LongRunningJobs" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Agent.LongRunningJobs.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<IncludedJobs/>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>