Esecuzione di ripristini in linea

Il ripristino in linea è supportato solo in SQL Server 2005 Enterprise Edition e versioni successive. In questa edizione un ripristino di file, pagina o a fasi viene eseguito in linea per impostazione predefinita.

 Le informazioni contenute in questo argomento sono rilevanti per i database che includono più file o filegroup e, in base al modello di recupero con registrazione minima, solo per i filegroup di sola lettura.

Il ripristino di dati mentre il database è in linea è denominato ripristino in linea. Un database viene considerato in linea quando il filegroup primario è in linea, anche se uno o più filegroup secondari non sono in linea. Tutti i modelli di recupero consentono di ripristinare un file non in linea mentre il database è in linea. Il modello di recupero con registrazione completa consente inoltre di ripristinare pagine mentre il database è in linea.

[!NOTA]

Il ripristino in linea viene eseguito in modo automatico in SQL Server 2005 Enterprise Edition e versioni successive e non richiede alcun intervento dell'utente. Se non si desidera utilizzare il ripristino in linea, è possibile attivare la modalità non in linea per un database prima di avviare un'operazione di ripristino. Per ulteriori informazioni, vedere Attivazione della modalità non in linea per un database o un file di seguito in questo argomento.

Durante un ripristino di file in linea, tutti i file in fase di ripristino e il relativo filegroup devono essere in modalità non in linea. Se uno qualsiasi di questi file è in linea quando viene avviata un'operazione di ripristino in linea, la prima istruzione di ripristino attiva la modalità non in linea per il filegroup di tale file. Durante un ripristino di pagina in linea, è invece necessario che sia in modalità non in linea solo la pagina.

Per qualsiasi scenario di ripristino in linea è necessario eseguire la procedura di base seguente:

  1. Ripristinare i dati.

  2. Ripristinare il log utilizzando l'opzione WITH RECOVERY per l'ultimo ripristino del log. Verrà attivata la modalità in linea per i dati ripristinati.

In alcuni casi non è possibile eseguire il rollback di una transazione di cui non è stato eseguito il commit perché i dati necessari per il rollback non sono in linea durante l'avvio. In tali casi, la transazione viene posticipata. Per ulteriori informazioni, vedere Transazioni posticipate.

[!NOTA]

Se il database attualmente utilizza il modello di recupero con registrazione minima delle operazioni bulk, prima di avviare un'operazione di ripristino in linea è consigliabile passare al modello di recupero con registrazione completa. Per ulteriori informazioni, vedere Considerazioni sul passaggio dal modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Nota importanteImportante

Se i backup sono stati eseguiti con più dispositivi collegati al server, è necessario che sia disponibile lo stesso numero di dispositivi durante un'operazione di ripristino in linea.

Backup del log per il ripristino in linea

In un ripristino in linea il punto di recupero corrisponde all'ultimo punto in cui è stata attivata la modalità non in linea o impostata l'autorizzazione di sola lettura per i dati in fase di ripristino. I backup del log delle transazioni fino a tale punto di recupero incluso devono essere tutti disponibili. In genere, è necessario eseguire un backup del log dopo tale punto in modo da includere il punto di recupero per il file. L'unica eccezione si verifica durante un ripristino in linea di dati di sola lettura da un backup dei dati che è stato eseguito dopo l'impostazione dell'autorizzazione di sola lettura. In tal caso, non è necessario che sia disponibile un backup del log.

In genere, è possibile eseguire backup del log delle transazioni mentre il database è in linea, anche dopo l'avvio della sequenza di ripristino. Il momento in cui deve essere eseguito l'ultimo backup del log dipende dalle proprietà del file in fase di ripristino:

  • Per un file di sola lettura in linea, è possibile eseguire l'ultimo backup del log necessario per l'operazione di recupero durante la prima sequenza di ripristino o prima di essa. Per un filegroup di sola lettura, i backup del log potrebbero non essere necessari se è stato eseguito un backup dei dati o differenziale dopo l'impostazione dell'autorizzazione di sola lettura.

    [!NOTA]

    Le informazioni sopra riportate sono valide anche per i file non in linea.

  • Un caso a parte riguarda un file di lettura/scrittura che era in linea quando è stata eseguita la prima istruzione di ripristino e per cui è stata attivata automaticamente la modalità non in linea da tale istruzione. In questo caso, è necessario eseguire un backup del log durante la prima sequenza di ripristino, ovvero la sequenza contenente una o più istruzioni RESTORE per il ripristino, il rollforward e il recupero dei dati. In genere, questo backup del log deve essere eseguito dopo il ripristino di tutti i backup completi e prima del recupero dei dati. Se, tuttavia, esistono più backup di file per un filegroup specifico, il punto minimo del backup del log corrisponde al momento successivo all'attivazione della modalità non in linea per il filegroup. Questo backup del log successivo al ripristino dei dati include il punto in cui è stata attivata la modalità non in linea per il file ed è necessario perché il Motore di database di SQL Server non può utilizzare log in linea per un ripristino in linea.

    [!NOTA]

    In alternativa, è possibile attivare manualmente la modalità non in linea per il file prima di eseguire la sequenza di ripristino. Per ulteriori informazioni, vedere "Attivazione della modalità non in linea per un database o un file" di seguito in questo argomento.

Attivazione della modalità non in linea per un database o un file

Se non si desidera utilizzare il ripristino in linea, è possibile attivare la modalità non in linea per il database prima di avviare la sequenza di ripristino utilizzando una delle modalità seguenti:

  • Con qualsiasi modello di recupero è possibile attivare la modalità non linea per il database utilizzando l'istruzione ALTER DATABASE seguente:

    ALTER DATABASE database_name SET OFFLINE

  • In alternativa, se si utilizza il modello di recupero con registrazione completa, è possibile forzare un ripristino di file o pagina non in linea utilizzando l'istruzione BACKUP LOG seguente per attivare lo stato di ripristino per il database:

    BACKUP LOG database_name WITH NORECOVERY

Fino a quando il database rimane in modalità non in linea, tutti i ripristini eseguiti sono di tipo non in linea.

Esempi

[!NOTA]

La sintassi di una sequenza di ripristino in linea è la stessa di una sequenza di ripristino non in linea.