長時間実行ジョブ

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

このモニターは、SQL Server の長時間実行エージェント ジョブを確認します。注: このモニターは既定では無効になっています。必要に応じて上書きを使用し、モニターを有効にしてください。

Knowledge Base article:

概要

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

原因

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

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

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

解決方法

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

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

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

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

名前

説明

既定値

有効

 

いいえ

アラートを生成する

 

はい

間隔 (秒)

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

600

同期時刻

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

 

警告しきい値 (分)

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

60

重大しきい値 (分)

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

120

タイムアウト (秒)

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

300

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Agent.LongRunningJobs" Accessibility="Public" Enabled="false" Target="SQL2014Core!Microsoft.SQLServer.2014.Agent" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AgentLongRunningJobsProvider" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.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="SQL2014Core!Microsoft.SQLServer.2014.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="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ConnectionString$</ConnectionString>
<Threshold1>60</Threshold1>
<Threshold2>120</Threshold2>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>