MSSQL 2016: SQL Server 2016 DB Engine is restarted

Microsoft.SQLServer.2016.DBEngineServiceRestart (Rule)

Detects SQL Server 2016 DB Engine restart. Note: This rule is disabled by default. Please use overrides to enable it when necessary.

Knowledge Base article:

Summary

This rule detects restart of SQL Server.

Configuration

This rule detects that SQL DB Engine service was in "Stopped" state during some short period and turned back to “Running” state after that. The allowed duration of unavailability is defined by "Unavailable Time" parameter and could be overridden. By default, this value is 900 seconds (15 minutes).

Overrideable Parameters

Name

Description

Default Value

Enabled

Enables or disables the workflow.

No

Priority

Defines Alert Priority.

1

Severity

Defines Alert Severity.

1

Unavailable Time (seconds)

The workflow will try to catch a service start event during this time frame, after event service stops.

900

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: SQL Server 2016 DB Engine is restarted
SQL Server 2016 DB Engine for SQL Server instance "{0}" has been restarted on the machine "{1}".

Member Modules:

ID Module Type TypeId RunAs 
ServiceRestart DataSource Microsoft.SQLServer.2016.WindowsServiceRestartDetectionProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.DBEngineServiceRestart" Enabled="false" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</Category>
<DataSources>
<DataSource ID="ServiceRestart" TypeID="Microsoft.SQLServer.2016.WindowsServiceRestartDetectionProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<ServiceName>SQL Server ($Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$)</ServiceName>
<CorrelatorInterval>900</CorrelatorInterval>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.DBEngineServiceRestart.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>