長時間実行ジョブ

Microsoft.SQLServer.2016.Agent.LongRunningJobs (UnitMonitor)

このモニターは、SQL Server の長時間実行エージェント ジョブを確認します。
SQL Server エージェントの Windows サービスは、いずれのエディションの SQL Server Express でもサポートされていないため、適切な検出されたオブジェクトがないことにご注意ください。このモニターは既定で無効になっています。必要に応じて、上書きを使用してモニターを有効にしてください。

Knowledge Base article:

概要

このモニターは、長時間実行 SQL エージェント ジョブがないか確認します。設定されたしきい値よりも長くジョブが実行されていると、警告またはエラー通知が出されます。

原因

異常な状態になるのは、定義されたしきい値よりも長く実行されていた SQL Server エージェント ジョブがあるためです。そのジョブに問題がある可能性があります。

SQL Server エージェントは、特定の時刻または間隔で実行されるようにスケジュールされた SQL Server タスクを実行したり、対処するためのアクション (ポケットベルまたは電子メールでだれかにアラートを送るなど) やタスクが管理者によって定義されている特定の状況を検出したりします。また、SQL Server エージェントは、管理者によって定義されたレプリケーション タスクの実行にも使用されます。

警告またはエラー状態の原因となったジョブを特定するには、状態変更または通知のコンテキスト データを調べます。

解決方法

SQL Server Management Studio を確認して、実行されているジョブを識別します。これらのジョブが必要以上に長く実行されている場合は、ジョブを調査して原因を見つけます。

sp_help_jobactivity を使用して、現在実行されているジョブに関する情報を表示します。

また、長時間実行されることが想定されるエージェント ジョブがある場合は、次の方法を取ることもできます。

上書き可能なパラメーター

名前

説明

既定値

アラートの優先度

アラートの優先順位を定義します。

アラートの重要度

アラートの重大度を定義します。

MatchMonitorHealth

重大しきい値 (分単位)

このモニターは、値がこのしきい値を超えた場合、状態を重大に変更します。このしきい値と警告しきい値の間 (両端を含む) にある場合、モニターは警告状態になります。

120

有効

ワークフローを有効または無効にします。

いいえ

アラートを生成する

ワークフローがアラートを生成するかどうかを定義します。

はい

間隔 (秒)

ワークフローを実行する定期的な実行間隔 (秒)。

600

同期時刻

24 時間形式で指定した同期時刻。省略可能です。

 

タイムアウト (秒)

ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。

300

警告しきい値 (分単位)

警告しきい値。このしきい値を超えると、モニターが少なくとも警告状態に変わります。

60

Element properties:

TargetMicrosoft.SQLServer.2016.Agent
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AgentLongRunningJobsProvider
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: 長時間実行ジョブ
コンピューター {0} 上の SQL インスタンス {1} に長時間実行されているエージェント ジョブがあります。これは、1 つ以上のジョブに問題があることを示します。
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SQL2016Core!Microsoft.SQLServer.2016.Agent" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AgentLongRunningJobsProvider" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Agent.LongRunningJobs.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/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>
<IntervalSeconds>600</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>