SQL Server の Windows サービス

Microsoft.SQLServer.2016.DBEngine.ServiceMonitor (UnitMonitor)

このモニターは、SQL Server データベース エンジン サービスの状態を確認します。

Knowledge Base article:

概要

このモニターは、SQL データベース エンジン Windows サービスの状態を確認します。

原因

このモニターの "停止中" 状態は、SQL DB エンジン サービスが自動的に開始するように構成されているものの、特定の期間にわたって "停止" 状態になっており、開始されていないことを示しています。この期間は、"使用できない時間" モニターのプロパティで定義されており、上書きすることができます。既定では、この値は 900 秒 (15 分) です。SQL DB エンジンが、この時間よりも早く "実行中" 状態に戻った場合は、単なる再起動であったことを意味しています。

特定の環境で、このモニターのノイズが多すぎる場合は、"使用できない時間" を増やしてください。逆に、問題が検出できていない場合は、"使用できない時間" の値を減らしてください。

一般的に、Windows サービスは次のようなさまざまな理由で停止することがあります。

解決方法

次のリンクを使用してサービスを再開できます。

SQL DB エンジン サービスの開始

次のリンクを使用して、この問題に関連する可能性のある、この SQL Server インスタンスのその他のアラートを表示できます。

SQL Server の通知の表示

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

名前

説明

既定値

アラートの優先度

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

アラートの重要度

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

エラー

サービスのスタートアップの種類が [自動] の場合にのみ通知

この値は、'true' または 'false' にのみ設定できます。このパラメーターが ‘false’ に設定されている場合、ワークフローは、サービスのスタートアップの種類に関する現在の設定を考慮に入れません。既定値は 'true' です。

はい

有効

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

はい

アラートを生成する

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

はい

間隔 (秒)

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

60

使用できない時間 (秒)

サービスが利用不可になってから異常であると判断されるまでの最小期間。

900

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.CheckWinServiceStateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: SQL Server サービスが停止しました
コンピューター {0} 上で DB エンジン インスタンス {1} の Windows サービスが停止しました
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.DBEngine.ServiceMonitor" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.CheckWinServiceStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.DBEngine.ServiceMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Running" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="NotRunning" HealthState="Error"/>
</OperationalStates>
<Configuration>
<Frequency>60</Frequency>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<ServiceName>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</ServiceName>
<CheckStartupType>true</CheckStartupType>
<UnavailableTime>900</UnavailableTime>
</Configuration>
</UnitMonitor>