MSSQL 2012 : Le rôle de réplica de disponibilité a changé

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

Cette erreur se produit quand le réplica de disponibilité change de rôle.

Knowledge Base article:

Résumé

Cette erreur se produit quand le réplica de disponibilité change de rôle.

Cet événement est désactivé par défaut dans SQL Server. Il peut être activé via l'instruction TSQL suivante : sp_altermessage 19406, 'with_log', 'true'

Causes

L'état du réplica a changé en raison d'un démarrage, d'un basculement, d'un problème de communication ou d'une erreur de cluster. Consultez l'événement pour plus d'informations.

Résolutions

Si l'état est passé à PRIMARY_PENDING, vérifiez sys.dm_hadr_database_replica_states. Si database_state_desc = RECOVERY_PENDING (synchronization_health_desc sera NOT_HEALTHY), essayez « ALTER DATABASE base_de_données SET HADR RESUME; ». Sinon, s'il s'agit du seul réplica (pas de réplica secondaire), (si nécessaire, prenez d'abord un instantané de la base de données à titre de sauvegarde) essayez « ALTER DATABASE base_de_données SET HADR OFF; » pour supprimer Always On afin de récupérer manuellement la base de données avec le service SQL ou un redémarrage de la base de données (ALTER DATABASE ONLINE).

TSQL : ALTER DATABASE nom_base_de_données SET HADR RESUME;

TSQL : ALTER DATABASE nom_base_de_données SET ONLINE;

TSQL : RESTORE DATABASE nom_base_de_données WITH RECOVERY;

Si le nouvel état est RESOLVING_NORMAL, consultez les autres messages.

Si le nouvel état est PRIMARY_NORMAL / SECONDARY_NORMAL, cela peut indiquer la réussite d'un basculement. Si le basculement ne correspond pas au résultat attendu, consultez les autres messages.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Activé

Active ou désactive le flux de travail.

Oui

Priorité

Définit la priorité de l'alerte.

1

Gravité

Définit la gravité de l'alerte.

1

Element properties:

TargetMicrosoft.SQLServer.2012.AlwaysOn.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2012 : Le rôle de réplica de disponibilité a changé
{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.2012.AlwaysOn.AvailabilityReplicaRoleChanged" Target="AlwaysOnDisc!Microsoft.SQLServer.2012.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.2012.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.2012.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.2012.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.2012.AlwaysOn.AvailabilityReplicaRoleChanged.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>