Condividi tramite


Configurare i criteri di failover flessibili per controllare le condizioni per il failover automatico (Gruppi di disponibilità AlwaysOn)

Questo argomento descrive come configurare i criteri di failover flessibili per un gruppo di disponibilità AlwaysOn usando Transact-SQL o PowerShell in SQL Server 2014. Con i criteri di failover flessibili viene garantito un controllo granulare delle condizioni che causano un failover automatico per un gruppo di disponibilità. Modificando le condizioni di errore che attivano un failover automatico e la frequenza di controlli di integrità, è possibile aumentare o diminuire la probabilità di un failover automatico per supportare il Contratto di servizio per la disponibilità elevata.

> [!NOTE]  
>  The flexible failover policy of an availability group cannot be configured by using [!INCLUDE[ssManStudioFull](../../../includes/ssmanstudiofull-md.md)].  

Prima di iniziare

Limitazioni sui failover automatici

  • Affinché si verifichi un failover automatico, la replica primaria corrente e una replica secondaria devono essere configurate per la modalità di disponibilità con commit sincrono e failover automatico e la replica secondaria deve essere sincronizzata con quella primaria.

  • Se un gruppo di disponibilità supera la relativa soglia di errore WSFC, non verrà effettuato il tentativo di failover automatico per il gruppo di disponibilità da parte del cluster WSFC. Inoltre, il gruppo di risorse WSFC del gruppo di disponibilità rimarrà in uno stato di errore finché l'amministratore del cluster non porterà manualmente online il gruppo di risorse con errori o l'amministratore del database non eseguirà un failover manuale del gruppo di disponibilità. La soglia di errore WSFC è definita come il numero massimo di errori supportati per il gruppo di disponibilità durante un determinato periodo di tempo. Il periodo di tempo predefinito è sei ore e il valore predefinito per il numero massimo di errori durante questo periodo è n-1, dove n è il numero di nodi WSFC. Per modificare i valori soglia dell'errore per un determinato gruppo di disponibilità, utilizzare la console di Gestione cluster di failover WSFC.

Prerequisiti

  • È necessario essere connessi all'istanza del server che ospita la replica primaria.

Sicurezza

Autorizzazioni

Attività Autorizzazioni
Per configurare i criteri di failover flessibili per un nuovo gruppo di disponibilità Sono necessarie l'appartenenza al ruolo predefinito del server sysadmin e l'autorizzazione server CREATE AVAILABILITY GROUP oppure l'autorizzazione ALTER ANY AVAILABILITY GROUP o CONTROL SERVER.
Per modificare i criteri di un gruppo di disponibilità esistente È necessaria l'autorizzazione ALTER AVAILABILITY GROUP nel gruppo di disponibilità, l'autorizzazione CONTROL AVAILABILITY GROUP, l'autorizzazione ALTER ANY AVAILABILITY GROUP o l'autorizzazione CONTROL SERVER.

Uso di Transact-SQL

Per configurare i criteri di failover flessibili

  1. Connettersi all'istanza del server che ospita la replica primaria.

  2. Per un nuovo gruppo di disponibilità, usare l'istruzione Transact-SQL CREATE AVAILABILITY GROUP. Se si modifica un gruppo di disponibilità esistente, usare l'istruzione Transact-SQL ALTER AVAILABILITY GROUP.

    • Per impostare il livello di condizione del failover, usare l'opzione FAILURE_CONDITION_LEVEL = n dove n è un numero intero da 1 a 5.

      Ad esempio, l'istruzione Transact-SQL seguente modifica il livello di condizione di errore di un gruppo di disponibilità esistente, AG1, nel livello uno:

      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      La relazione di questi valori interi con i livelli di condizione di errore è la seguente:

      Valore Transact-SQL Livello Il failover automatico viene avviato...
      1 Uno In caso di server inaccessibile. Il servizio SQL Server viene arrestato a causa di un failover o un riavvio.
      2 Due In caso di mancata risposta del server. Viene soddisfatta qualsiasi condizione di valore inferiore, il servizio SQL Server è connesso al cluster e viene superata la soglia di Timeout controllo integrità o la replica primaria corrente si trova in uno stato di errore.
      3 Tre In caso di errori critici del server. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore critico interno del server.

      Si tratta del livello predefinito.
      4 Quattro In caso di errori con gravità moderata del server. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore non critico del server.
      5 Cinque In qualsiasi condizione di errore qualificata. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica una condizione di errore appropriata.

      Per altre informazioni sui livelli di condizione del failover, vedere Criteri di failover flessibili per failover automatico di un gruppo di disponibilità (SQL Server).

    • Per configurare la soglia di Timeout controllo integrità, usare l'opzione HEALTH_CHECK_TIMEOUT = n dove n è un numero intero compreso tra 15000 millisecondi (15 secondi) e 4294967295 millisecondi. Il valore predefinito è 30000 millisecondi (30 secondi)

      Ad esempio, l'istruzione Transact-SQL seguente modificata la soglia di Timeout controllo integrità di un gruppo di disponibilità esistente, AG1, in 60.000 millisecondi (un minuto).

      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

Utilizzo di PowerShell

Per configurare i criteri di failover flessibili**

  1. Impostare il valore predefinito (cd) sull'istanza del server che ospita la replica primaria.

  2. Quando si aggiunge una replica di disponibilità a un gruppo di disponibilità, utilizzare il cmdlet New-SqlAvailabilityGroup. Quando si modifica una replica di disponibilità esistente, utilizzare il cmdlet Set-SqlAvailabilityGroup.

    • Per impostare il livello di condizione di failover, usare il FailureConditionLevel parametro di livello, dove il livello è uno dei valori seguenti:

      Valore Livello Il failover automatico viene avviato...
      OnServerDown Uno In caso di server inaccessibile. Il servizio SQL Server viene arrestato a causa di un failover o un riavvio.
      OnServerUnresponsive Due In caso di mancata risposta del server. Viene soddisfatta qualsiasi condizione di valore inferiore, il servizio SQL Server è connesso al cluster e viene superata la soglia di Timeout controllo integrità o la replica primaria corrente si trova in uno stato di errore.
      OnCriticalServerError Tre In caso di errori critici del server. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore critico interno del server.

      Si tratta del livello predefinito.
      OnModerateServerError Quattro In caso di errori con gravità moderata del server. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore non critico del server.
      OnAnyQualifiedFailureConditions Cinque In qualsiasi condizione di errore qualificata. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica una condizione di errore appropriata.

      Per altre informazioni sui livelli di condizione del failover, vedere Criteri di failover flessibili per failover automatico di un gruppo di disponibilità (SQL Server).

      Ad esempio, il comando seguente modifica il livello di condizione di errore di un gruppo di disponibilità esistente, AG1, nel livello uno:

      Set-SqlAvailabilityGroup `
       -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `
       -FailureConditionLevel OnServerDown  
      
    • Per impostare la soglia di timeout del controllo integrità, usare il HealthCheckTimeout parametro n, dove n è un intero compreso tra 15000 millisecondi (15 secondi) e 4294967295 millisecondi. Il valore predefinito è 30000 millisecondi (30 secondi).

      Ad esempio, il comando seguente modifica la soglia di Timeout controllo integrità di un gruppo di disponibilità esistente, AG1, in 120.000 millisecondi (due minuti).

      Set-SqlAvailabilityGroup `
       -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAG `
       -HealthCheckTimeout 120000  
      

Nota

Per visualizzare la sintassi di un cmdlet, usare il Get-Help cmdlet nell'ambiente di PowerShell SQL Server. Per altre informazioni, vedere Get Help SQL Server PowerShell.

Per impostare e utilizzare il provider PowerShell per SQL Server

Vedere anche

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)
Modalità di disponibilità (gruppi di disponibilità AlwaysOn)
Failover e modalità di failover (gruppi di disponibilità AlwaysOn)
WSFC (Windows Server Failover Clustering) con SQL Server
Failover Policy for Failover Cluster Instances
sp_server_diagnostics (Transact-SQL)