MSSQL für Windows Always On: Rolle des Verfügbarkeitsreplikats geändert

Microsoft.SQLServer.Linux.EventRule.AvailabilityReplica.RoleChanged (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.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

300

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

1

Synchronisierungszeit

Synchronisierungszeit

 

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

200

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL für Linux: Rolle des Verfügbarkeitsreplikats geändert
{0}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Linux.DataSource.EventReaderSingleParam Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Linux.EventRule.AvailabilityReplica.RoleChanged" Target="SqlDiscL!Microsoft.SQLServer.Linux.AvailabilityReplica" Enabled="true" ConfirmDelivery="true" Remotable="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.DataSource.EventReaderSingleParam">
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<FilterMsg>The state of the local availability replica</FilterMsg>
<ParamRegex>^The state of the local availability replica in (availability group '.+') has changed from '[^\s']+' to '[^\s']+'\.(?:[^']*)$</ParamRegex>
<TargetKey>availability group '$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.AvailabilityReplica"]/AvailabilityGroupName$'</TargetKey>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.AvailabilityReplica.RoleChanged.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: 19406. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>