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 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. 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 sospende ogni database secondario corrispondente, il database primario viene eseguito senza mirroring. ** 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 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 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:
Per sospendere un database tramite:
Completamento: Come evitare il riempimento del log delle transazioni
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 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.
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
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 altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.
Espandere il nodo Disponibilità elevata AlwaysOn e il nodo Gruppi di disponibilità.
Espandere il gruppo di disponibilità.
Espandere il nodo Database di disponibilità , fare clic con il pulsante destro del mouse sul database e scegliere Sospendi spostamento dati.
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.
Utilizzo di Transact-SQL
Per sospendere un database
Connettersi all'istanza del server che ospita la replica di cui si desidera sospendere il database. Per altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.
Sospendere il database usando l'istruzione ALTER DATABASE seguente:
ALTER DATABASE nome_database SET HADR SUSPEND;
Con PowerShell
Per sospendere un database
Passare alla directory (cd) dell'istanza del server che ospita la replica di cui si vuole sospendere il database. Per altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.
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 denominataComputer\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
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:
Aggiungere ulteriore spazio di log per il database primario.
Riprendere il database secondario prima che il log si riempia. Per altre informazioni, vedere Riprendere un database di disponibilità (SQL Server).
Rimuovere il database secondario. Per altre informazioni, vedere Rimuovere un database secondario da un gruppo di disponibilità (SQL Server).
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)