ALTER DATABASE (Transact-SQL) SET HADR

Si applica a:SQL Server

Questo argomento include la sintassi di ALTER DATABASE correlata all'impostazione delle opzioni dei gruppi di disponibilità Always On in un database secondario. È consentita una sola opzione SET HADR per ogni istruzione ALTER DATABASE. Queste opzioni sono supportate solo su repliche secondarie.

Convenzioni di sintassi Transact-SQL

Sintassi

ALTER DATABASE database_name  
   SET HADR   
   {  
        { AVAILABILITY GROUP = group_name | OFF }  
   | { SUSPEND | RESUME }  
   }  
[;]  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

database_name
Nome del database secondario da modificare.

SET HADR
Esegue il comando per i gruppi di disponibilità Always On specificato sul database indicato.

{ AVAILABILITY GROUP =group_name | OFF }
Crea un join del database di disponibilità o lo rimuove dal gruppo di disponibilità specificato come segue:

group_name
Crea un join tra il database specificato nella replica secondaria ospitata dall'istanza del server in cui si esegue il comando e il gruppo di disponibilità specificato da group_name.

I prerequisiti per questa operazione sono i seguenti:

  • È necessario che il database sia già stato aggiunto al gruppo di disponibilità nella replica primaria.

  • La replica primaria deve essere attiva. Per informazioni su come risolvere i problemi relativi a una replica primaria inattiva, vedere l'articolo Risolvere i problemi relativi alla configurazione di Gruppi di disponibilità AlwaysOn (SQL Server).

  • La replica primaria deve essere online e quella secondaria deve essere connessa alla primaria.

  • Il database secondario deve essere stato ripristinato tramite WITH NORECOVERY da backup di database e di log recenti eseguiti sul database primario, terminando con un backup del log sufficientemente recente per consentire l'aggiornamento del database secondario in base a quello primario.

    Nota

    Per aggiungere un database al gruppo di disponibilità, connettersi all'istanza del server che ospita la replica primaria e usare l'istruzione ALTER AVAILABILITY GROUPgroup_name ADD DATABASE database_name.

Per altre informazioni, vedere Creare un join tra un database secondario e un gruppo di disponibilità (SQL Server).

OFF
Rimuove il database secondario specificato dal gruppo di disponibilità.

La rimozione di un database secondario può essere utile se tale database è in ritardo rispetto a quello primario e non si desidera attenderne l'aggiornamento. Dopo aver rimosso il database secondario, è possibile aggiornarlo ripristinando una sequenza di backup che terminano con un backup del log recente (usando RESTORE ... CON NORECOVERY).

Importante

Per rimuovere completamente un database di disponibilità da un gruppo di disponibilità, connettersi all'istanza del server che ospita la replica di disponibilità primaria e usare l'istruzione ALTER AVAILABILITY GROUPgroup_name REMOVE DATABASE availability_database_name. Per altre informazioni, vedere Rimuovere un database primario da un gruppo di disponibilità (SQL Server).

SUSPEND
Sospende lo spostamento dei dati su un database secondario. Un comando SUSPEND viene restituito non appena è stato accettato dalla replica che ospita il database di destinazione, ma la sospensione effettiva del database avviene in modo asincrono.

L'ambito dell'impatto dipende dal punto in cui si esegue l'istruzione ALTER DATABASE:

  • Se si sospende un database secondario su una replica secondaria, viene sospeso solo il database secondario locale. Le connessioni esistenti nel database secondario leggibile rimangono utilizzabili. Non sono consentite nuove connessioni al database sospeso nel database secondario leggibile finché non viene ripreso lo spostamento di dati.

  • Se si sospende un database nella replica primaria, lo spostamento di dati viene sospeso nei database secondari corrispondenti in ogni replica secondaria. Le connessioni esistenti in un database secondario leggibile rimangono usabili e le nuove connessioni con finalità di lettura non si connettono a repliche secondarie leggibili.

  • Quando lo spostamento di dati viene sospeso a causa di un failover manuale forzato, non sono consentite connessioni alla nuova replica secondaria e lo spostamento di dati è sospeso.

Quando un database in una replica secondaria viene sospeso, sia il database sia la replica non risultano più sincronizzati e vengono contrassegnati come NOT SYNCHRONIZED.

Importante

Durante la fase di sospensione di un database secondario, nella coda di invio del database primario corrispondente verranno accumulati record del log delle transazioni non inviati. Tramite le connessioni alla replica secondaria vengono restituiti i dati disponibili quando lo spostamento di dati è stato sospeso.

Nota

La sospensione e la ripresa di un database secondario AlwaysOn non incide direttamente sulla disponibilità del database primario, anche se la sospensione di un database secondario può avere un impatto sulle funzionalità di ridondanza e failover del database primario, finché il database secondario sospeso non viene ripreso. Questo comportamento è diverso rispetto al mirroring del database, in cui lo stato del mirroring risulta sospeso sia sul database mirror che sul database principale, finché il mirroring non viene ripreso. La sospensione di un database primario AlwaysOn comporta la sospensione dello spostamento di dati su tutti i corrispondenti database secondari e le funzionalità di ridondanza e failover cessano per tale database finché non viene ripreso il database primario.

Per altre informazioni, vedere Sospendere un database di disponibilità (SQL Server).

RESUME
Riprende lo spostamento dei dati sospesi nel database secondario specificato. Un comando RESUME viene restituito non appena è stato accettato dalla replica che ospita il database di destinazione, ma la ripresa effettiva del database avviene in modo asincrono.

L'ambito dell'impatto dipende dal punto in cui si esegue l'istruzione ALTER DATABASE:

  • Se si riprende un database secondario su una replica secondaria, viene ripreso solo il database secondario locale. Lo spostamento dei dati viene ripreso a meno che il database non sia stato sospeso anche sulla replica primaria.

  • Se si riprende un database sulla replica primaria, lo spostamento dei dati viene ripreso su ogni replica secondaria su cui il database secondario corrispondente non è stato sospeso anche localmente. Per riprendere un database secondario è sospeso singolarmente su una replica secondaria, connettersi all'istanza del server che ospita la replica secondaria e riprendere il database da quel punto.

    In modalità con commit sincrono modalità lo stato del database cambia su SYNCHRONIZING. Se attualmente non è sospeso alcun altro database, anche lo stato della replica viene modificato in SYNCHRONIZING.

    Per altre informazioni, vedere Riprendere un database di disponibilità (SQL Server).

Stati del database

Quando per un database secondario viene creato un join a un gruppo di disponibilità, la replica secondaria locale modifica lo stato di tale database da RESTORING a ONLINE. Se un database secondario viene rimosso da un gruppo di disponibilità, lo stato viene reimpostato su RESTORING dalla replica secondaria locale. In questo modo è possibile applicare backup di log successivi dal database primario a quello secondario.

Restrizioni

Eseguire le istruzioni ALTER DATABASE all'esterno sia delle transazioni che dei batch.

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database. Per la creazione di un join di un database a un gruppo di disponibilità è richiesta l'appartenenza al ruolo predefinito del database db_owner .

Esempi

Nell'esempio seguente viene creato un join del database secondario, AccountsDb1, alla replica secondaria locale del gruppo di disponibilità AccountsAG.

ALTER DATABASE AccountsDb1 SET HADR AVAILABILITY GROUP = AccountsAG;  

Nota

Per un esempio di questa istruzione Transact-SQL usata nel contesto, vedere Creare un gruppo di disponibilità (Transact-SQL).

Vedi anche

ALTER DATABASE (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL)
CREATE AVAILABILITY GROUP (Transact-SQL)
Panoramica di Gruppi di disponibilità Always On (SQL Server)Risolvere i problemi di configurazione di Gruppi di disponibilità Always On (SQL Server)