MSSQL 2012: Função da Réplica de Disponibilidade Alterada

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

Este erro ocorre quando a réplica de disponibilidade altera sua função.

Knowledge Base article:

Resumo

Este erro ocorre quando a réplica de disponibilidade altera sua função.

Por padrão, esse evento está desabilitado no SQL Server. Ele pode ser habilitado por meio do seguinte TSQL: sp_altermessage 19406, 'with_log', 'true'

Causas

O estado de réplica foi alterado devido a uma inicialização, um failover, um problema de comunicação ou um erro de cluster. Veja o evento para obter informações adicionais.

Soluções

Se o estado “alterado para” é PRIMARY_PENDING, então marque sys.dm_hadr_database_replica_states. Se database_state_desc = RECOVERY_PENDING (synchronization_health_desc será NOT_HEALTHY), então tente “ALTER DATABASE db SET HADR RESUME;”. Caso contrário, se essa for a única réplica (sem réplica secundária), então (considere a possibilidade de primeiro tirar um instantâneo como backup se necessário) tente usar “ALTER DATABASE db SET HADR OFF;” para remover o Always On, de modo que seja possível então recuperar manualmente o banco de dados com o serviço SQL ou reiniciar o banco de dados (ALTER DATABASE ONLINE).

TSQL: ALTER DATABASE DbName SET HADR RESUME;

TSQL: ALTER DATABASE DbName SET ONLINE;

TSQL: RESTORE DATABASE DbName WITH RECOVERY;

Se o estado "alterado para" for RESOLVING_NORMAL, verifique se há mensagens adicionais.

Se o estado "alterar para" for PRIMARY_NORMAL / SECONDARY_NORMAL, isso poderá indicar um failover bem-sucedido. Verifique se há mensagens adicionais quando o failover não for esperado.

Parâmetros Substituíveis

Nome

Descrição

Valor Padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Sim

Prioridade

Define a Prioridade do Alerta.

1

Severidade

Define a Severidade do Alerta.

1

Element properties:

TargetMicrosoft.SQLServer.2012.AlwaysOn.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2012: Função da Réplica de Disponibilidade Alterada
{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>