Condividi tramite


Ripristino online (SQL Server)

Il ripristino online è supportato solo in SQL Server Enterprise Edition. In questa edizione, un file, una pagina o un ripristino a fasi è online per impostazione predefinita. Questo argomento è rilevante per i database che contengono più file o filegroup (e, nel modello di recupero semplice, solo per filegroup di sola lettura).

Il ripristino dei dati mentre il database è online viene chiamato ripristino online. Un database viene considerato online ogni volta che il filegroup primario è online, anche se uno o più filegroup secondari sono offline. In qualsiasi modello di recupero è possibile ripristinare un file offline mentre il database è online. Nel modello di recupero con registrazione completa è anche possibile ripristinare le pagine mentre il database è online.

Annotazioni

Il ripristino online viene eseguito automaticamente in SQL Server Enterprise e non richiede alcuna azione dell'utente. Se non si vuole usare il ripristino online, è possibile portare offline un database prima di avviare un ripristino. Per altre informazioni, vedere Acquisizione di un database o di un file offline più avanti in questo argomento.

Durante un ripristino di file online, tutti i file da ripristinare e il relativo filegroup sono offline. Se uno di questi file è online all'avvio di un ripristino online, la prima istruzione di ripristino porta offline il filegroup del file. Al contrario, durante il ripristino di una pagina online, solo la pagina è offline.

Ogni scenario di ripristino online prevede i passaggi di base seguenti:

  1. Ripristinare i dati.

  2. Ripristina il log utilizzando WITH RECOVERY per l'ultimo ripristino del log. In questo modo i dati ripristinati vengono online.

In alcuni casi, non è possibile eseguire il rollback di una transazione di cui non è stato eseguito il commit perché i dati richiesti dal rollback sono offline durante l'avvio. In questo caso, la transazione viene posticipata. Per altre informazioni, vedere Transazioni posticipate (SQL Server).

Annotazioni

Se il database utilizza attualmente il modello di recupero con registrazione minima, è consigliabile passare al modello di recupero con registrazione completa prima di avviare un ripristino in linea. Per altre informazioni, vedere Visualizzazione o modifica del modello di recupero di un database (SQL Server).

Importante

Se i backup sono stati eseguiti con più dispositivi collegati al server, lo stesso numero di dispositivi deve essere disponibile durante un ripristino online.

Backup del log per il ripristino online

In un ripristino online, il punto di ripristino è il punto in cui i dati da ripristinare sono stati portati offline o resi di sola lettura per l'ultima volta. I backup del log delle transazioni che portano a e includono questo punto di ripristino devono essere tutti disponibili. In genere, è necessario un backup del log dopo tale punto per coprire il punto di ripristino per il file. L'unica eccezione è durante un ripristino online dei dati di sola lettura da un backup dei dati eseguito dopo che i dati sono diventati di sola lettura. In questo caso, non è necessario disporre di un backup del log.

In genere, è possibile eseguire backup del log delle transazioni mentre il database è online, anche dopo l'inizio della sequenza di ripristino. L'intervallo dell'ultimo backup del log dipende dalle proprietà del file da ripristinare:

  • Per un file di sola lettura online, è possibile eseguire l'ultimo backup del log necessario per il ripristino prima o durante la prima sequenza di ripristino. Un filegroup di sola lettura potrebbe non richiedere backup del log se è stato eseguito un backup di dati o differenziali dopo che il filegroup è diventato di sola lettura.

    Annotazioni

    Le informazioni precedenti si applicano anche a ogni file offline.

  • Esiste un caso speciale per un file di lettura/scrittura online quando è stata rilasciata la prima istruzione di ripristino e che è stata quindi portata offline automaticamente da tale istruzione di ripristino. In questo caso, è necessario eseguire un backup del log durante la prima sequenza di ripristino (la sequenza di una o più istruzioni RESTORE che ripristinano, esegue il roll forward e ripristinano i dati). In genere, questo backup del log deve essere eseguito dopo il ripristino di tutti i backup completi e prima di recuperare i dati. Tuttavia, se sono presenti più backup di file per un filegroup specifico, il punto minimo di backup del log è il tempo dopo che il filegroup è offline. Questo backup del log di post-ripristino dei dati acquisisce il punto in cui il file è stato portato offline. Il backup del log di post-ripristino dei dati è necessario perché il motore di database di SQL Server non può usare il log online per un ripristino online.

    Annotazioni

    In alternativa, è possibile portare il file offline manualmente prima della sequenza di ripristino. Per altre informazioni, vedere "Portare offline un database o un file" più avanti in questo argomento.

Portare offline un database o un file

Se non si vuole usare il ripristino online, è possibile portare offline il database prima di avviare la sequenza di ripristino usando uno dei metodi seguenti:

  • In qualsiasi modello di recupero è possibile portare offline il database usando l'istruzione ALTER DATABASE seguente:

    ALTER DATABASE database_name SET OFFLINE

  • In alternativa, nel modello di recupero con registrazione completa, è possibile forzare la modalità offline di un ripristino di un file o di una pagina usando l'istruzione BACKUP LOG seguente per impostare il database nello stato di ripristino:

    BACKUP LOG database_name WITH NORECOVERY.

Finché un database rimane offline, tutti i ripristini sono ripristini offline.

Esempi

Annotazioni

La sintassi per una sequenza di ripristino online è identica a quella di una sequenza di ripristino offline.

Attività correlate

Vedere anche

Ripristini di file (modello di recupero completo)
Ripristini di file (modello di recupero semplice)
Ripristino di pagine (SQL Server)
Ripristini parziali (SQL Server)
Panoramica del ripristino e del recupero (SQL Server)