MSSQL 2014: роль реплики доступности изменена.

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

Эта ошибка возникает при изменении роли реплики доступности.

Knowledge Base article:

Сводка

Эта ошибка возникает при изменении роли реплики доступности.

Это событие по умолчанию отключено в SQL Server. Его можно включить с помощью следующей инструкции TSQL: sp_altermessage 19406, 'with_log', 'true'

Причины

Состояние реплики изменилось из-за запуска, перехода на другой ресурс, сбоя связи или ошибки кластера. Дополнительные сведения см. в событии.

Решения

Если состояние "изменено на" равно PRIMARY_PENDING, проверьте sys.dm_hadr_database_replica_states. Если database_state_desc равно RECOVERY_PENDING (synchronization_health_desc будет равно NOT_HEALTHY), попробуйте выполнить инструкцию "ALTER DATABASE база_данных SET HADR RESUME;". В противном случае, если это единственная реплика (вторичной реплики нет), при необходимости создайте снимок базы данных в качестве резервной копии, а затем попробуйте выполнить инструкцию "ALTER DATABASE база_данных SET HADR OFF;", чтобы удалить Always On и впоследствии вручную восстановить базу данных с помощью службы SQL или перезапустить базу данных (ALTER DATABASE ONLINE).

TSQL: ALTER DATABASE имя_базы_данных SET HADR RESUME;

TSQL: ALTER DATABASE имя_базы_данных SET ONLINE;

TSQL: RESTORE DATABASE имя_базы_данных WITH RECOVERY;

Если состояние "изменено на" равно RESOLVING_NORMAL, проверьте наличие дополнительных сообщений.

Если состояние "изменить на" равно PRIMARY_NORMAL/SECONDARY_NORMAL, это может означать, что переход на другой ресурс выполнен успешно. Если переход не ожидался, проверьте наличие дополнительных сообщений.

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Включено

Включает или отключает рабочий процесс.

Да

Приоритет

Определяет приоритет предупреждения.

1

Серьезность

Определяет серьезность предупреждения.

1

Element properties:

TargetMicrosoft.SQLServer.2014.AlwaysOn.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2014: роль реплики доступности изменена.
{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.2014.AlwaysOn.AvailabilityReplicaRoleChanged" Target="AlwaysOnDisc!Microsoft.SQLServer.2014.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.2014.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.2014.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.2014.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.2014.AlwaysOn.AvailabilityReplicaRoleChanged.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>