Condividi tramite


Sospendere un database di disponibilità (SQL Server)

È possibile sospendere un database di disponibilità in Gruppi di disponibilità AlwaysOn utilizzando SQL Server Management Studio, Transact-SQL o PowerShell in SQL Server 2012. Si noti che è necessario eseguire un comando di sospensione nell'istanza del server che ospita 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 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.

Il database primario rimane disponibile. Se si sospende ogni database secondario corrispondente, il database primario viene eseguito senza mirroring.

Nota importanteImportante

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 rimane in esecuzione, in modalità senza mirroring. 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 AlwaysOn 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 database secondari corrispondenti, mentre le funzionalità di ridondanza e failover cessano per tale database finché il database primario non viene ripreso.

  • Prima di iniziare:

    Limitazioni e restrizioni

    Prerequisiti

    Indicazioni

    Sicurezza

  • Per sospendere un database tramite:  

  • SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Completamento:  Come evitare il riempimento del log delle transazioni

  • Attività correlate

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.

Indicazioni

Durante i colli di bottiglia, potrebbe essere utile sospendere brevemente uno o più database secondari per migliorare temporaneamente le prestazioni 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.

È richiesta l'autorizzazione ALTER AVAILABILITY GROUP per il gruppo di disponibilità e l'autorizzazione CONTROL AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP o CONTROL SERVER.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

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, vedere la sessione Prerequisiti più indietro in questo argomento.

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

  3. Espandere il gruppo di disponibilità.

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

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

    In Esplora oggetti il database sospeso viene contrassegnato con l'icona di un indicatore di pausa.

[!NOTA]

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

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

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 ulteriori informazioni, vedere la sessione Prerequisiti più indietro in questo argomento.

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

    ALTER DATABASE database_name SET HADR SUSPEND

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di PowerShell

Per sospendere un database

  1. Spostarsi sulla directory (cd) dell'istanza del server che ospita la replica di cui si desidera sospendere il database. Per ulteriori informazioni, vedere la sessione Prerequisiti più indietro in questo argomento.

  2. Utilizzare 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\Databases\MyDb3
    

    [!NOTA]

    Per visualizzare la sintassi di un cmdlet, utilizzare il cmdlet Get-Help nell'ambiente PowerShell di SQL Server. Per ulteriori informazioni, vedere Visualizzazione della Guida di SQL Server PowerShell.

Per impostare e utilizzare il provider PowerShell per SQL Server

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Completamento: 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

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Attività correlate

Vedere anche

Concetti

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)

Riprendere un database di disponibilità (SQL Server)