Condividi tramite


Procedura: Configurazione, gestione e attivazione di un server di standby a caldo (Transact-SQL)

La configurazione di un server di standby prevede, in genere, la creazione di un backup completo e di backup periodici del log delle transazioni nel server primario e l'applicazione in sequenza di tali backup nel server di standby. Tra un ripristino e l'altro il server di standby è in stato di sola lettura. Quando è necessario ricorrere al server di standby, i backup del log delle transazioni in sospeso, incluso il backup del log delle transazioni attivo del server primario, vengono applicati al server di standby e il database viene recuperato.

Per creare backup nel server primario

  1. Eseguire l'istruzione BACKUP DATABASE per creare il backup completo.

  2. Eseguire l'istruzione BACKUP LOG per creare il backup del log delle transazioni.

  3. Ripetere il passaggio 2 per ogni log delle transazioni che si desidera applicare in futuro.

Per configurare e gestire il server di standby

  1. Eseguire l'istruzione RESTORE DATABASE utilizzando la clausola NORECOVERY per ripristinare il backup completo creato nel passaggio 1 nel server primario.

  2. Eseguire l'istruzione RESTORE LOG utilizzando la clausola STANDBY per applicare tutti i log delle transazioni creati nel server primario durante il passaggio 2. Specificare il nome del file di rollback che include il contenuto delle pagine dei dati precedente al rollback delle transazioni relative a tali pagine per le quali non è stato eseguito il commit.

    Nota

    Per ottenere prestazioni migliori, è consigliabile utilizzare l'istruzione WITH NORECOVERY quando si applicano più log. Talvolta, un file standby risulta necessario solo come copia di failover di sola lettura da utilizzare se al file principale viene applicata la modalità offline.

  3. Ripetere il passaggio 2 per tutti i log delle transazioni creati nel server primario.

Per attivare il server di standby (server primario non disponibile)

  1. Se possibile, eseguire il backup del log delle transazioni attualmente attivo (parte finale del log). Per creare un backup della parte finale del log quando non è possibile avviare il database normalmente, eseguire l'istruzione BACKUP LOG sul database primario utilizzando WITH NO_TRUNCATE. Questo è l'ultimo backup del log delle transazioni che viene applicato al server di standby al momento dell'attivazione. Per ulteriori informazioni, vedere Procedura: Creazione di un backup del log delle transazioni (Transact-SQL).

  2. Eseguire l'istruzione RESTORE LOG utilizzando la clausola STANDBY per applicare tutti i backup dei log delle transazioni, incluso il backup del log delle transazioni attivo creato nel passaggio 1, non ancora applicati al server di standby.

    Nota

    Per ottenere prestazioni migliori, è consigliabile utilizzare l'istruzione WITH NORECOVERY quando si applicano più log. Per un esempio relativo a quando utilizzare l'istruzione WITH STANDBY e quando utilizzare l'istruzione WITH NORECOVERY, vedere più avanti.

  3. Eseguire l'istruzione RESTORE DATABASE WITH RECOVERY per recuperare il database e attivare il server di standby.

Esempio

In questo esempio viene configurato il database MyAdvWorks in un server di standby. È possibile utilizzare il database in modalità di sola lettura tra un'operazione di ripristino e l'altra.

-- Restore the initial full backup on the standby server.
USE master
GO
RESTORE DATABASE MyAdvWorks
   FROM MyAdvWorks_1 
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the first transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log1
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Apply the next transaction log backup.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log2
   WITH STANDBY = 'c:\undo.ldf'
GO
-- Repeat for each transaction log backup created on the 
-- primary server.
--
-- Time elapses.. .. ..
--
-- The primary server has failed. Back up the 
-- tail of the transaction log on the primary server.
BACKUP LOG MyAdvWorks
   TO MyAdvWorks_log3
   WITH NO_TRUNCATE
GO
-- Apply the final (active) transaction log backup
-- to the standby server. All preceding transaction
-- log backups must have been already applied.
RESTORE LOG MyAdvWorks
   FROM MyAdvWorks_log3
   WITH NORECOVERY 
GO
-- Recover the database on the standby server, 
-- making it available for normal operations.
RESTORE DATABASE MyAdvWorks
   WITH RECOVERY
GO