MSSQL 2016: Rolle des Verfügbarkeitsreplikats geändert

Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplicaRoleChanged (Rule)

Dieser Fehler tritt auf, wenn das Verfügbarkeitsreplikat die Rolle wechselt.

Knowledge Base article:

Zusammenfassung

Dieser Fehler tritt auf, wenn das Verfügbarkeitsreplikat die Rolle wechselt.

Dieses Ereignis ist in SQL Server standardmäßig deaktiviert. Es kann durch folgende TSQL aktiviert werden: sp_altermessage 19406, 'with_log', 'true'.

Ursachen

Der Replikatstatus wurde aufgrund eines Startvorgangs, Failovers, Kommunikationsproblems oder Clusterfehlers geändert. Weitere Informationen finden Sie im entsprechenden Ereignis.

Lösungen

Wenn der "Geändert in"-Status PRIMARY_PENDING lautet, prüfen Sie "sys.dm_hadr_database_replica_states". Wenn "database_state_desc = RECOVERY_PENDING" ("synchronization_health_desc" ist NOT_HEALTHY), verwenden Sie "ALTER DATABASE db SET HADR RESUME;". Wenn es sich ansonsten um das einzige Replikat handelt (kein sekundäres Replikat), gehen Sie folgendermaßen vor (ziehen Sie ggf. eine Datenbankmomentaufnahme als Sicherung in Betracht): "ALTER DATABASE db SET HADR OFF;", um Always On zu entfernen und dann die Datenbank manuell mit dem SQL-Dienst oder einem Datenbankneustart (ALTER DATABASE ONLINE) wiederherzustellen.

TSQL: ALTER DATABASE DbName SET HADR RESUME;

TSQL: ALTER DATABASE DbName SET ONLINE;

TSQL: RESTORE DATABASE DbName WITH RECOVERY;

Wenn der "Geändert in"-Status RESOLVING_NORMAL lautet, prüfen Sie auf weitere Meldungen.

Wenn der "Geändert in"-Status PRIMARY_NORMAL / SECONDARY_NORMAL lautet, weist dies möglicherweise auf ein erfolgreiches Failover hin. Prüfen Sie auf weitere Fehlermeldungen, wenn das Failover nicht erwartet wurde.

Parameter, die außer Kraft gesetzt werden können

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

1

Element properties:

TargetMicrosoft.SQLServer.2016.AlwaysOn.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: Rolle des Verfügbarkeitsreplikats geändert
{0}
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplicaRoleChanged" Target="AlwaysOnDisc!Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplica" Enabled="true" ConfirmDelivery="true" Remotable="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="AlwaysOnDisc!Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplica"]/PerformanceObjectName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<!--Default instance with SQLServer object name-->
<Value Type="String">MS$Target/Property[Type="AlwaysOnDisc!Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplica"]/PerformanceObjectName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">19406</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="AlwaysOnDisc!Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplica"]/AvailabilityGroupName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplicaRoleChanged.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>