Sospendere un database di disponibilità (SQL Server)Suspend an Availability Database (SQL Server)

È possibile sospendere un database di disponibilità in Gruppi di disponibilità Always OnAlways On availability groups utilizzando SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo PowerShell in SQL Server 2017SQL Server 2017.You can suspend an availability database in Gruppi di disponibilità Always OnAlways On availability groups by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or PowerShell in SQL Server 2017SQL Server 2017. Si noti che è necessario eseguire un comando di sospensione nell'istanza del server in cui viene ospitato il database da sospendere o riprendere.Note that a suspend command needs to be issued on the server instance that hosts the database to be suspended or resumed.

L'effetto del comando di sospensione dipende dalla scelta di sospendere un database primario o secondario, come segue:The effect of a suspend command depends on whether you suspend a secondary database or a primary database, as follows:

Database sospesoSuspended Database Effetto del comando di sospensioneEffect of Suspend Command
Database secondarioSecondary database Viene sospeso solo il database secondario locale e il relativo stato di sincronizzazione diventa NOT SYNCHRONIZED.Only the local secondary database is suspended and its synchronization state becomes NOT SYNCHRONIZING. Gli altri database secondari non sono influenzati.Other secondary databases are not affected. 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.The suspended database stops receiving and applying data (log records) and begins to fall behind the primary database. Le connessioni esistenti nel database secondario leggibile rimangono utilizzabili.Existing connections on the readable secondary remain usable. Non sono consentite nuove connessioni al database sospeso nel database secondario leggibile finché non viene ripreso lo spostamento di dati.New connections to the suspended database on the readable secondary are not allowed until data movement is resumed.

Il database primario rimane disponibile.The primary database remains available. Se si sospende ogni database secondario corrispondente, il database primario viene eseguito senza mirroring.If you suspend each of the corresponding secondary databases, the primary database runs exposed.

** 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.** Important *\* While a secondary database is suspended, the send queue of the corresponding primary database will accumulate unsent transaction log records. Tramite le connessioni alla replica secondaria vengono restituiti i dati disponibili quando lo spostamento di dati è stato sospeso.Connections to the secondary replica return data that was available at the time the data movement was suspended.
Database primarioPrimary database Nel database primario viene arrestato lo spostamento di dati a ogni database secondario connesso.The primary database stops data movement to every connected secondary database. Il database primario rimane in esecuzione, in modalità senza mirroring.The primary database continues running, in an exposed mode. Il database primario rimane disponibile ai client e le connessioni esistenti in un database secondario leggibile rimangono utilizzabili ed è possibile effettuare nuove connessioni.The primary database remains available to clients, and existing connections on a readable secondary remain usable and new connections can be made.

Nota

La sospensione di un database secondario Always On non incide direttamente sulla disponibilità del database primario.Suspending an Always On secondary database does not directly affect the availability of the primary database. Tuttavia, la sospensione di un database secondario può avere un impatto sulle funzionalità di ridondanza e failover del database primario.However, suspending a secondary database can impact redundancy and failover capabilities for the primary database. Questo comportamento è diverso rispetto al mirroring del database, in cui lo stato del mirroring risulta sospeso sia sul database mirror che sul database principale.This is in contrast to database mirroring, where the mirroring state is suspended on both the mirror database and the principal database. La sospensione di un database primario Always On 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.Suspending an Always On primary database suspends data movement on all the corresponding secondary databases, and redundancy and failover capabilities cease for that database until the primary database is resumed.

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

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.A SUSPEND command returns as soon as it has been accepted by the replica that hosts the target database, but actually suspending the database occurs asynchronously.

Prerequisiti Prerequisites

È necessario essere connessi all'istanza del server che ospita il database che si desidera sospendere.You must be connected to the server instance that hosts the database that you want to suspend. Per sospendere un database primario e i database secondari corrispondenti, connettersi all'istanza del server che ospita la replica primaria.To suspend a primary database and the corresponding secondary databases, connect to the server instance that hosts the primary replica. Per sospendere un database secondario lasciando disponibile il database primario, connettersi alla replica secondaria.To suspend a secondary database while leaving the primary database available, connect to the secondary replica.

Indicazioni Recommendations

Durante i colli di bottiglia, potrebbe essere utile sospendere brevemente uno o più database secondari per migliorare temporaneamente le prestazioni sulla replica primaria.During bottlenecks, suspending one or more secondary databases briefly might be useful to improve performance temporarily on the primary replica. Finché un database secondario rimane sospeso, il log delle transazioni del database primario corrispondente non può essere troncato.As long as a secondary database remains suspended, the transaction log of the corresponding primary database cannot be truncated. Per questo motivo, i record del log si accumulano sul database primario.This causes log records to accumulate on the primary database. È pertanto consigliabile riprendere o rimuovere rapidamente un database secondario sospeso.Therefore, we recommend that you resume, or remove, a suspended secondary database quickly. Per ulteriori informazioni, vedere Completamento: Come evitare il riempimento del log delle transazioni, più avanti in questo argomento.For more information, see Follow up: Avoiding a Full Transaction Log, later in this topic.

Sicurezza Security

Autorizzazioni Permissions

È richiesta l'autorizzazione ALTER per il database.Requires ALTER permission on the database.

È necessaria l'autorizzazione ALTER AVAILABILITY GROUP nel gruppo di disponibilità, l'autorizzazione CONTROL AVAILABILITY GROUP, l'autorizzazione ALTER ANY AVAILABILITY GROUP o l'autorizzazione CONTROL SERVER.Requires ALTER AVAILABILITY GROUP permission on the availability group, CONTROL AVAILABILITY GROUP permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per sospendere un databaseTo suspend a 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.In Object Explorer, connect to the server instance that hosts the availability replica on which you want to suspend a database, and expand the server tree. Per altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.For more information, see Prerequisites, earlier in this topic.

  2. Espandere il nodo Disponibilità elevata Always On e il nodo Gruppi di disponibilità .Expand the Always On High Availability node and the Availability Groups node.

  3. Espandere il gruppo di disponibilità.Expand the availability group.

  4. Espandere il nodo Database di disponibilità , fare clic con il pulsante destro del mouse sul database e scegliere Sospendi spostamento dati.Expand the Availability Databases node, right-click the database, and click Suspend Data Movement.

  5. Nella finestra di dialogo Sospendi spostamento dati fare clic su OK.In the Suspend Data Movement dialog box, click OK.

    In Esplora oggetti il database sospeso viene contrassegnato con l'icona di un indicatore di pausa.Object Explorer indicates that the database is suspended by changing the database icon to display a pause indicator.

Nota

Per sospendere database aggiuntivi in questo percorso di replica, ripetere i passaggi 4 e 5 per ogni database.To suspend additional databases on this replica location, repeat steps 4 and 5 for each database.

Utilizzo di Transact-SQL Using Transact-SQL

Per sospendere un databaseTo suspend a database

  1. Connettersi all'istanza del server che ospita la replica di cui si desidera sospendere il database.Connect to the server instance that hosts the replica whose database you want to suspend. Per altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.For more information, see Prerequisites, earlier in this topic.

  2. Sospendere il database usando l'istruzione ALTER DATABASEseguente:Suspend the database by using the following ALTER DATABASEstatement:

    ALTER DATABASE nome_database SET HADR SUSPENDALTER DATABASE database_name SET HADR SUSPEND

Utilizzo di PowerShell Using PowerShell

Per sospendere un databaseTo suspend a database

  1. Passare alla directory (cd) dell'istanza del server che ospita la replica di cui si vuole sospendere il database.Change directory (cd) to the server instance that hosts the replica whose database you want to suspend. Per altre informazioni, vedere la sessione Prerequisitipiù indietro in questo argomento.For more information, see Prerequisites, earlier in this topic.

  2. Usare il cmdlet Suspend-SqlAvailabilityDatabase per sospendere il gruppo di disponibilità.Use the Suspend-SqlAvailabilityDatabase cmdlet to suspend the availability group.

    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.For example, the following command suspends data synchronization for the availability database MyDb3 in the availability group MyAg on the server instance named Computer\Instance.

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

    Nota

    Per visualizzare la sintassi di un cmdlet, usare il cmdlet Get-Help nell'ambiente SQL ServerSQL Server PowerShell.To view the syntax of a cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. Per altre informazioni, vedere Get Help SQL Server PowerShell.For more information, see Get Help SQL Server PowerShell.

    Per impostare e utilizzare il provider PowerShell per SQL ServerTo set up and use the SQL Server PowerShell provider

Follow Up: Avoiding a Full Transaction Log Follow Up: Avoiding a Full Transaction Log

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.Normally, when an automatic checkpoint is performed on a database, its transaction log is truncated to that checkpoint after the next log backup. Tuttavia, quando un database secondario viene sospeso, tutti i record del log correnti rimangono attivi sul database primario.However, while a secondary database is suspended, all of the current log records remain active on the primary database. 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.If the transaction log fills up (either because it reaches its maximum size or the server instance runs out of space), the database cannot perform any more updates.

Per evitare il problema, effettuare una delle azioni seguenti:To avoid this problem, you should do one of the following:

Vedere ancheSee Also

Panoramica di Gruppi di disponibilità Always On (SQL Server) Overview of Always On Availability Groups (SQL Server)
Riprendere un database di disponibilità (SQL Server)Resume an Availability Database (SQL Server)