Cette erreur se produit quand le réplica de disponibilité change de rôle.
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'
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.
Si le nouvel état est 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 db SET HADR RESUME;”. S'il s'agit du seul réplica (absence d'un réplica secondaire), (créez d'abord une capture instantanée de la base de données pour la sauvegarder si nécessaire) essayez “ALTER DATABASE db SET HADR OFF;” pour supprimer Always On de façon à récupérer manuellement la base de données avec le service SQL ou redémarrez la base de données (ALTER DATABASE ONLINE).
TSQL : ALTER DATABASE DbName SET HADR RESUME;
TSQL : ALTER DATABASE DbName SET ONLINE;
TSQL : RESTORE DATABASE DbName 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.
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 |
Severité | Définit la gravité de l'alerte. | 1 |
Target | Microsoft.SQLServer.2016.AlwaysOn.AvailabilityReplica | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<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>