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.
|
||
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.
[Inizio pagina]
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 ulteriori informazioni, vedere la sessione Prerequisiti più 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 fare clic su 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.
[Inizio pagina]
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 ulteriori informazioni, vedere la sessione Prerequisiti più indietro in questo argomento.
Sospendere il database utilizzando l'istruzione ALTER DATABASE seguente:
ALTER DATABASE database_name SET HADR SUSPEND
[Inizio pagina]
Utilizzo di PowerShell
Per sospendere un database
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.
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
[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:
Aggiungere ulteriore spazio di log per il database primario.
Riprendere il database secondario prima che il log si riempia. Per ulteriori informazioni, vedere Riprendere un database di disponibilità (SQL Server).
Rimuovere il database secondario. Per ulteriori informazioni, vedere Rimuovere un database secondario da un gruppo di disponibilità (SQL Server).
Per risolvere i problemi di un log delle transazioni pieno
[Inizio pagina]