MSSQL per Windows Always On: Ruolo della replica di disponibilità modificato

Microsoft.SQLServer.Linux.EventRule.AvailabilityReplica.RoleChanged (Rule)

Questo errore si verifica quando la replica di disponibilità modifica il relativo ruolo.

Knowledge Base article:

Riepilogo

Questo errore si verifica quando la replica di disponibilità modifica il relativo ruolo.

Questo evento viene disabilitato in SQL Server per impostazione predefinita. Può essere abilitato con l'istruzione TSQL seguente: sp_altermessage 19406, 'with_log', 'true'

Cause

Lo stato della replica è stato modificato a causa di un errore di avvio, di failover, di comunicazione o del cluster. Per altre informazioni, vedere l'evento.

Risoluzioni

Se lo stato "modificato in" è PRIMARY_PENDING, verificare sys.dm_hadr_database_replica_states. Se database_state_desc = RECOVERY_PENDING (synchronization_health_desc sarà NOT_HEALTHY), provare "ALTER DATABASE db SET HADR RESUME;". Se invece si tratta dell'unica replica (ovvero non sono presenti repliche secondarie), provare "ALTER DATABASE db SET HADR OFF;" per rimuovere la funzionalità Always On al fine di ripristinare manualmente il database con il servizio SQL o di riavviare il database (ALTER DATABASE ONLINE). Se necessario, effettuare prima uno snapshot del database come backup.

TSQL: ALTER DATABASE DbName SET HADR RESUME;

TSQL: ALTER DATABASE DbName SET ONLINE;

TSQL: RESTORE DATABASE DbName WITH RECOVERY;

Se lo stato "modificato in" è RESOLVING_NORMAL, verificare se sono presenti altri messaggi.

Se lo stato "modificato in" è PRIMARY_NORMAL / SECONDARY_NORMAL, potrebbe significare che il failover è stato completato correttamente. Verificare se sono presenti altri messaggi nel caso in cui il failover non fosse previsto.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

300

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

1

Tempo di sincronizzazione

Tempo di sincronizzazione

 

Timeout (secondi)

Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito.

200

Timeout per la connessione di database (secondi)

Il flusso di lavoro avrà esito negativo e registrerà un evento se non riesce ad accedere al database durante il periodo specificato.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.AvailabilityReplica
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL in Linux: Ruolo della replica di disponibilità modificato
{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>