Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
In SQL Server 2012 e 2014, se un database che fa parte di un gruppo di disponibilità nella replica primaria perde la possibilità di scrivere le transazioni, non attiva un failover anche se le repliche sono sincronizzate e configurate per il failover automatico.
SQL Server 2016 introduce un nuovo comportamento facoltativo denominato failover avanzato del database che può essere impostato dalla procedura guidata o mediante Transact-SQL. Se questa opzione è abilitata ed è configurato il failover automatico, quando un database che fa parte di un gruppo di disponibilità non è più in grado di scrivere le transazioni, verrà attivato un failover in una replica secondaria sincronizzata.
Scenario 1
Viene configurato un gruppo di disponibilità tra l'istanza A e l'istanza B che contiene un singolo database denominato DB1. Il file di dati di DB1 si trova nell'unità E e il relativo file di log delle transazioni nell'unità F. La modalità di disponibilità è impostata su commit sincrono con failover automatico. Nel gruppo di disponibilità è configurata la nuova opzione avanzata di failover del database. Le due repliche si trovano attualmente in uno stato sincronizzato. Un problema provoca un guasto nell'unità E. Questo scenario non causa un failover avanzato del database perché l'unità E non contiene il log delle transazioni.
Nello scenario precedente, se l'errore 823 viene segnalato per 4 volte consecutive mentre l'opzione di failover del database è impostata su attivato, SQL Server informerà il cluster di failover di Windows di eseguire le azioni appropriate. Questa operazione può essere configurata in base ai criteri di failover del Gruppo di Disponibilità, per eseguire un failover o un riavvio della risorsa.
Scenario 2
Questo scenario prevede la stessa configurazione del gruppo di disponibilità dello Scenario 1. Però questa volta l'errore anziché verificarsi nell'unità E si verifica nell'unità F che contiene il log delle transazioni. In questo caso verrà attivato un failover perché vengono soddisfatte le condizioni coperte dal failover avanzato del database: il log delle transazioni non è raggiungibile, per cui il database non può scrivere le transazioni.
Scenario 3
Viene configurato un gruppo di disponibilità tra l'istanza A e l'istanza B che contiene due database: DB1e DB2. La modalità di disponibilità è impostata su commit sincrono con failover automatico ed è abilitato il failover avanzato del database. Viene perso l'accesso al disco contenente i dati di DB2 e i file di log delle transazioni. Quando il problema viene rilevato, il gruppo di disponibilità eseguirà automaticamente il failover su Istanza B.
Configurare il failover avanzato
Il failover avanzato del database può essere configurato con SQL Server Management Studio o Transact-SQL. I cmdlet di PowerShell non prevedono attualmente questa possibilità. Per impostazione predefinita, il failover avanzato del database è disabilitato.
SQL Server Management Studio
È possibile abilitare il failover avanzato del database durante la creazione di un gruppo di disponibilità mediante SQL Server Management Studio. L'unico modo per disabilitarlo o abilitarlo dopo la creazione del gruppo di disponibilità consiste nell'usare Transact-SQL.
Creazione manuale del gruppo di disponibilità
Usare le istruzioni disponibili nell'articolo Usare la finestra di dialogo Nuovo gruppo di disponibilità (SQL Server Management Studio) per creare il gruppo di disponibilità. Per abilitare il failover avanzato del database, selezionare la casella di controllo accanto a Controllo dello stato a livello di database.
Uso della Creazione guidata del gruppo di disponibilità
Usare le istruzioni disponibili nell'articolo Usare la Creazione Guidata Gruppo di Disponibilità (SQL Server Management Studio). L'opzione per abilitare il failover avanzato del database si trova nella finestra di dialogo Specifica nome del gruppo di disponibilità. Per abilitarlo, selezionare la casella accanto a Rilevamento dell'integrità a livello di database.
Transact-SQL
Per configurare il comportamento del failover avanzato del database durante la creazione di un gruppo di disponibilità, DB_FAILOVER deve essere impostato su ON nel modo seguente:
CREATE AVAILABILITY GROUP [AGNAME]
WITH ( DB_FAILOVER = ON)
...
Per aggiungere questo comportamento dopo la configurazione di un gruppo di disponibilità, usare il ALTER AVAILABILITY GROUP comando :
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = ON)
Per disabilitare questo comportamento, eseguire il comando seguente ALTER AVAILABILITY GROUP :
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = OFF)
Vista di gestione dinamica
Per verificare se il failover avanzato del database è abilitato in un gruppo di disponibilità, eseguire una query sulla vista di gestione dinamica sys.availability_groups. La colonna db_failover conterrà zero se è disabilitato o 1 se è abilitato.