Condividi tramite


Sospendere un database di disponibilità (SQL Server)

Si applica a:SQL Server

È possibile sospendere un database di disponibilità in Gruppi di disponibilità Always On usando SQL Server Management Studio, Transact-SQL o PowerShell in SQL Server. Si noti che è necessario eseguire un comando di sospensione nell'istanza del server in cui viene ospitato il database da sospendere o riprendere.

L'effetto del comando di sospensione dipende dalla scelta di sospendere un database primario o secondario, come segue:

Database sospeso Effetto del comando di sospensione
Database secondario Viene sospeso solo il database secondario locale e il relativo stato di sincronizzazione diventa NOT SYNCHRONIZED. Gli altri database secondari non sono influenzati. Nel database sospeso non vengono più eseguite la ricezione e l'applicazione di dati (record di log) e viene persa la sincronizzazione con il database primario. Le connessioni esistenti sul secondario leggibile rimangono utilizzabili. Non sono consentite nuove connessioni al database sospeso nel database secondario leggibile finché non viene ripreso lo spostamento di dati. Questo comportamento si applica solo quando le connessioni vengono aperte usando il listener e il routing di sola lettura.

Il database primario rimane disponibile. Se si sospendono ciascuno dei database secondari corrispondenti, il database primario rimane esposto.

** 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.
Database primario Nel database primario viene arrestato lo spostamento di dati a ogni database secondario connesso. Il database primario continua a funzionare, in modalità esposta. Il database primario rimane disponibile ai client e le connessioni esistenti in un database secondario leggibile rimangono utilizzabili ed è possibile effettuare nuove connessioni.

Nota

La sospensione di un database secondario Always On non incide direttamente sulla disponibilità del database primario. Tuttavia, la sospensione di un database secondario può avere un impatto sulle funzionalità di ridondanza e failover del database primario. Questo comportamento è diverso rispetto al mirroring del database, in cui lo stato del mirroring risulta sospeso sia sul database mirror che sul database principale. 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.

Prima di iniziare

Limitazioni e restrizioni

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.

Prerequisiti

È necessario essere connessi all'istanza del server che ospita il database che si desidera sospendere. Per sospendere un database primario e i database secondari corrispondenti, connettersi all'istanza del server che ospita la replica primaria. Per sospendere un database secondario lasciando disponibile il database primario, connettersi alla replica secondaria.

Consigli

Durante le strozzature, potrebbe essere utile sospendere brevemente uno o più database secondari per migliorare temporaneamente le performance sulla replica primaria. Finché un database secondario rimane sospeso, il log delle transazioni del database primario corrispondente non può essere troncato. Per questo motivo, i record del log si accumulano sul database primario. È pertanto consigliabile riprendere o rimuovere rapidamente un database secondario sospeso. Per ulteriori informazioni, vedere Completamento: Come evitare il riempimento del log delle transazioni, più avanti in questo argomento.

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione ALTER per il database.

Sono necessarie l'autorizzazione ALTER AVAILABILITY GROUP nel gruppo di disponibilità, l'autorizzazione CONTROL AVAILABILITY GROUP permission, l'autorizzazione ALTER ANY AVAILABILITY GROUP o l'autorizzazione CONTROL SERVER.

Utilizzo di SQL Server Management Studio

Per sospendere un database

  1. In Esplora oggetti connettersi all'istanza del server che ospita la replica di disponibilità in cui si desidera sospendere un database ed espandere l'albero del server. Per ulteriori informazioni, consultare Prerequisiti nella parte precedente di questo argomento.

  2. Espandere il nodo Disponibilità elevata AlwaysOn e il nodo Gruppi di disponibilità.

  3. Espandi il gruppo di disponibilità.

  4. Espandere il nodo Database di disponibilità , fare clic con il pulsante destro del mouse sul database e scegliere Sospendi spostamento dati.

  5. Nella finestra di dialogo Sospendi spostamento dati fare clic su OK.

    In Esplora oggetti, l'icona del database cambia in un indicatore di pausa per segnalare che il database è sospeso.

Nota

Per sospendere database aggiuntivi in questo percorso di replica, ripetere i passaggi 4 e 5 per ciascun database.

Utilizzo di Transact-SQL

Per sospendere un database

  1. Connettersi all'istanza del server che ospita la replica di cui si desidera sospendere il database. Per altre informazioni, vedere la sezione Prerequisiti più indietro in questo argomento.

  2. Sospendere il database usando l'istruzione ALTER DATABASE seguente:

    ALTER DATABASE database_name SET HADR SUSPEND;

Utilizzando PowerShell

Per sospendere un database

  1. Cambia directory (cd) all'istanza del server che ospita la replica di cui desideri sospendere il database. Per altre informazioni, vedere la sezione Prerequisiti, più indietro in questo argomento.

  2. Usare il cmdlet Suspend-SqlAvailabilityDatabase per sospendere il gruppo di disponibilità.

    Ad esempio, il seguente comando sospende la sincronizzazione dati per il database di disponibilità MyDb3 nel gruppo di disponibilità MyAg nell'istanza del server denominata Computer\Instance.

    Suspend-SqlAvailabilityDatabase `   
    -Path SQLSERVER:\Sql\Computer\Instance\AvailabilityGroups\MyAg\AvailabilityDatabases\MyDb3  
    

    Nota

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

Per impostare e utilizzare il provider PowerShell per SQL Server

Aggiornamento: Come evitare il riempimento del log delle transazioni

In genere, quando su un database viene eseguito un checkpoint automatico, il relativo log delle transazioni viene troncato in corrispondenza di tale checkpoint dopo il successivo backup del log. Tuttavia, quando un database secondario viene sospeso, tutti i record del log correnti rimangono attivi sul database primario. Se il log delle transazioni si riempie, perché raggiunge le dimensioni massime o l'istanza del server esaurisce lo spazio, il database non può eseguire ulteriori aggiornamenti.

Per evitare il problema, effettuare una delle azioni seguenti:

Per risolvere i problemi di un log delle transazioni pieno

Attività correlate

Vedi anche

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)
Riprendere un database di disponibilità (SQL Server)