Configurare i criteri di failover automatico flessibiliConfigure Flexible Automatic Failover Policy

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento verrà descritto come configurare i criteri di failover flessibili per un gruppo di disponibilità AlwaysOn tramite Transact-SQLTransact-SQL o PowerShell in SQL Server 2017SQL Server 2017.This topic describes how to configure the flexible failover policy for an Always On availability group by using Transact-SQLTransact-SQL or PowerShell in SQL Server 2017SQL Server 2017. Con i criteri di failover flessibili viene garantito un controllo granulare delle condizioni che causano un failover automatico per un gruppo di disponibilità.A flexible failover policy provides granular control over the conditions that cause automatic failover for an availability group. 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.By changing the failure conditions that trigger an automatic failover and the frequency of health checks, you can increase or decrease the likelihood of an automatic failover to support your SLA for high availability.

Prima di iniziare Before You Begin

Limitazioni sui failover automatici Limitations on Automatic Failovers

  • 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.For an automatic failover to occur, the current primary replica and one secondary replica must be configured for synchronous-commit availability mode with automatic failover and the secondary replica must be synchronized with the primary replica.

  • Il failover automatico è supportato solo con tre repliche.Only three replicas are supported for automatic failover.

  • 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.If an availability group exceeds its WSFC failure threshold, the WSFC cluster will not attempt an automatic failover for the availability group. 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à.Furthermore, the WSFC resource group of the availability group remains in a failed state until either the cluster administrator manually brings the failed resource group online or the database administrator performs a manual failover of the availability group. La soglia di errore WSFC è definita come il numero massimo di errori supportati per il gruppo di disponibilità durante un determinato periodo di tempo.The WSFC failure threshold is defined as the maximum number of failures supported for the availability group during a given time period. 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.The default time period is six hours, and the default value for the maximum number of failures during this period is n-1, where n is the number of WSFC nodes. Per modificare i valori soglia dell'errore per un determinato gruppo di disponibilità, utilizzare la console di Gestione cluster di failover WSFC.To change the failure-threshold values for a given availability group, use the WSFC Failover Manager Console.

Prerequisiti Prerequisites

  • È necessario essere connessi all'istanza del server che ospita la replica primaria.You must be connected to the server instance that hosts the primary replica.

Sicurezza Security

Autorizzazioni Permissions

AttivitàTask AutorizzazioniPermissions
Per configurare i criteri di failover flessibili per un nuovo gruppo di disponibilitàTo configure the flexible failover policy for a new availability group 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.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.
Per modificare i criteri di un gruppo di disponibilità esistenteTo modify the policy of an existing availability group È 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.Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Utilizzo di Transact-SQL Using Transact-SQL

Per configurare i criteri di failover flessibiliTo configure the flexible failover policy

  1. Connettersi all'istanza del server che ospita la replica primaria.Connect to the server instance that hosts the primary replica.

  2. Per un nuovo gruppo di disponibilità, usare l'istruzione CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL .For a new availability group, use the CREATE AVAILABILITY GROUP Transact-SQLTransact-SQL statement. Se si modifica un gruppo di disponibilità esistente, usare l'istruzione ALTER AVAILABILITY GROUP Transact-SQLTransact-SQL .If you are modifying an existing availability group, use the ALTER AVAILABILITY GROUP Transact-SQLTransact-SQL statement.

    • Per impostare il livello di condizione del failover, usare l'opzione FAILURE_CONDITION_LEVEL = n dove n è un numero intero da 1 a 5.To set the failover condition level, use the FAILURE_CONDITION_LEVEL = n option, where, n is an integer from 1 to 5.

      Ad esempio, l'istruzione Transact-SQLTransact-SQL seguente modifica il livello di condizione di errore di un gruppo di disponibilità esistente, AG1, nel livello uno:For example, the following Transact-SQLTransact-SQL statement changes the failure-condition level of an existing availability group, AG1, to level one:

      
      ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 1);  
      

      La relazione di questi valori interi con i livelli di condizione di errore è la seguente:The relationship of these integer values to the failure condition levels is as follows:

      Transact-SQLTransact-SQL Valore Value LevelLevel Il failover automatico viene avviato...Automatic Is Failover Initiated When…
      11 UnoOne In caso di server inaccessibile.On server down. Il servizio SQL Server viene arrestato a causa di un failover o un riavvio.The SQL Server service stops because of a failover or restart.
      22 DueTwo In caso di mancata risposta del server.On server unresponsive. 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.Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      33 TreThree In caso di errori critici del server.On critical server error. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore critico interno del server.Any condition of lower value is satisfied or an internal critical server error occurs.

      Si tratta del livello predefinito.This is the default level.
      44 QuattroFour In caso di errori con gravità moderata del server.On moderate server error. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore non critico del server.Any condition of lower value is satisfied or a moderate Server error occurs.
      55 CinqueFive In qualsiasi condizione di errore qualificata.On any qualified failure conditions. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica una condizione di errore appropriata.Any condition of lower value is satisfied or a qualifying failure condition occurs.

      Per altre informazioni sui livelli di condizione del failover, vedere Criteri di failover flessibili per failover automatico di un gruppo di disponibilità (SQL Server).For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (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.To configure the health check timeout threshold, use the HEALTH_CHECK_TIMEOUT = n option, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. Il valore predefinito è 30000 millisecondi (30 secondi)The default value is 30000 milliseconds (30 seconds)

      Ad esempio, l'istruzione Transact-SQLTransact-SQL seguente modificata la soglia di Timeout controllo integrità di un gruppo di disponibilità esistente, AG1, in 60.000 millisecondi (un minuto).For example, the following Transact-SQLTransact-SQL statement changes the health-check timeout threshold of an existing availability group, AG1, to 60,000 milliseconds (one minute).

      
      ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);  
      

Utilizzo di PowerShell Using PowerShell

Per configurare i criteri di failover flessibiliTo configure the flexible failover policy

  1. Impostare il valore predefinito (cd) nell'istanza del server che ospita la replica primaria.Set default (cd) to the server instance that hosts the primary replica.

  2. Quando si aggiunge una replica di disponibilità a un gruppo di disponibilità, usare il cmdlet New-SqlAvailabilityGroup .When adding an availability replica to an availability group, use the New-SqlAvailabilityGroup cmdlet. Quando si modifica una replica di disponibilità esistente, usare il cmdlet Set-SqlAvailabilityGroup .When modifying an existing availability replica, use the Set-SqlAvailabilityGroup cmdlet.

    • Per impostare il livello delle condizioni di failover, usare il parametro FailureConditionLevellevel , dove level è uno dei valori seguenti:To set the failover condition level, use the FailureConditionLevellevel parameter, where, level is one of the following values:

      ValoreValue LevelLevel Il failover automatico viene avviato...Automatic Is Failover Initiated When…
      OnServerDownOnServerDown UnoOne In caso di server inaccessibile.On server down. Il servizio SQL Server viene arrestato a causa di un failover o un riavvio.The SQL Server service stops because of a failover or restart.
      OnServerUnresponsiveOnServerUnresponsive DueTwo In caso di mancata risposta del server.On server unresponsive. 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.Any condition of lower value is satisfied, the SQL Server service is connected to the cluster and the health check timeout threshold is exceeded, or the current primary replica is in a failed state.
      OnCriticalServerErrorOnCriticalServerError TreThree In caso di errori critici del server.On critical server error. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore critico interno del server.Any condition of lower value is satisfied or an internal critical server error occurs.

      Si tratta del livello predefinito.This is the default level.
      OnModerateServerErrorOnModerateServerError QuattroFour In caso di errori con gravità moderata del server.On moderate server error. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica un errore non critico del server.Any condition of lower value is satisfied or a moderate Server error occurs.
      OnAnyQualifiedFailureConditionsOnAnyQualifiedFailureConditions CinqueFive In qualsiasi condizione di errore qualificata.On any qualified failure conditions. Viene soddisfatta qualsiasi condizione di valore inferiore o si verifica una condizione di errore appropriata.Any condition of lower value is satisfied or a qualifying failure condition occurs.

      Per altre informazioni sui livelli di condizione del failover, vedere Criteri di failover flessibili per failover automatico di un gruppo di disponibilità (SQL Server).For more information about the failover condition levels, see Flexible Failover Policy for Automatic Failover of an Availability Group (SQL Server).

      Ad esempio, il comando seguente modifica il livello di condizione di errore di un gruppo di disponibilità esistente, AG1, nel livello uno:For example, the following command changes the failure-condition level of an existing availability group, AG1, to level one.

      Set-SqlAvailabilityGroup `   
      -Path SQLSERVER:\Sql\PrimaryServer\InstanceName\AvailabilityGroups\MyAg `   
      -FailureConditionLevel OnServerDown  
      
    • Per impostare la soglia di Timeout controllo integrità, usare il parametro HealthCheckTimeoutn , dove n è un numero intero compreso tra 15000 millisecondi (15 secondi) e 4294967295 millisecondi.To set the health check timeout threshold, use the HealthCheckTimeoutn parameter, where, n is an integer from 15000 milliseconds (15 seconds) to 4294967295 milliseconds. Il valore predefinito è 30000 millisecondi (30 secondi).The default value is 30000 milliseconds (30 seconds).

      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).For example, the following command changes the health-check timeout threshold of an existing availability group, AG1, to 120,000 milliseconds (two minutes).

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

Nota

Per visualizzare la sintassi di un cmdlet, usare il cmdlet Get-Help nell'ambiente PowerShell di SQL ServerSQL Server .To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Per altre informazioni, vedere Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

Per impostare e utilizzare il provider PowerShell per SQL ServerTo set up and use the SQL Server PowerShell provider

Vedere ancheSee Also

Panoramica di gruppi di disponibilità AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Modalità di disponibilità (gruppi di disponibilità AlwaysOn) Availability Modes (Always On Availability Groups)
Failover e modalità di failover (gruppi di disponibilità AlwaysOn) Failover and Failover Modes (Always On Availability Groups)
WSFC (Windows Server Failover Clustering) con SQL Server Windows Server Failover Clustering (WSFC) with SQL Server
Criteri di failover per istanze del cluster di failover Failover Policy for Failover Cluster Instances
sp_server_diagnostics (Transact-SQL)sp_server_diagnostics (Transact-SQL)