Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Puoi ripristinare un backup del log delle transazioni in SQL Server utilizzando SQL Server Management Studio, Transact-SQL o PowerShell.
Prerequisiti
Devi ripristinare i backup nell'ordine in cui li hai creati. Prima di ripristinare un backup specifico del log delle transazioni, ripristina i seguenti backup precedenti senza annullare le transazioni non commesse, utilizzando WITH NORECOVERY:
Il backup completo del database e, opzionalmente, l'ultimo backup differenziale effettuato prima di quel backup del log delle transazioni. Il database deve aver utilizzato il modello di recupero completo o bulk logged prima che venisse creato l'ultimo backup completo o differenziale.
Tutti i backup del log delle transazioni eseguiti dopo il backup completo del database o il backup differenziale (se ne ripristini uno) e prima di quel backup del log delle transazioni. Devi applicare i backup dei log nell'ordine in cui li hai creati, senza alcuna lacuna nella catena dei log.
Per maggiori informazioni sui backup dei log delle transazioni, vedi Backup dei log delle transazioni e Applica i backup del log delle transazioni.
Autorizzazioni
Per un database esistente, RESTORE i permessi sono assegnati per impostazione predefinita ai membri dei ruoli server fissi sysadmin e dbcreator e al proprietario (dbo) del database.
RESTORE I permessi vanno a ruoli la cui appartenenza il server può sempre verificare. Il server può controllare l'appartenenza al ruolo predefinito del database solo quando il database è accessibile e non danneggiato, cosa che non sempre è vera quando RESTORE è in esecuzione. Per questo motivo, i membri del ruolo db_owner database fisso non hanno RESTORE permessi.
Remarks
Per un database speculare, o un database secondario di un gruppo di disponibilità che non hai ancora aggiunto al gruppo di disponibilità, ripristina l'ultimo backup del log con l'opzione NORECOVERYNORECOVERYNORECOVERY (-NoRecovery in PowerShell). Il database deve rimanere in stato di ripristino.
Per un database secondario della spedizione log, ripristina l'ultimo backup del log con l'opzione NORECOVERY o l'opzione STANDBY (-StandbyFile in PowerShell). L'opzione STANDBY offre accesso in sola lettura al database tra un ripristino e l'altro.
Uso di SQL Server Management Studio
Avviso
In un ripristino tipico, selezioni i backup dei log insieme ai backup dei dati e differenziali nella finestra di dialogo Ripristina database.
Connettersi all'istanza appropriata di Motore di database di SQL Server. In Esplora oggetti, seleziona il nome del server per espandere l'albero del server.
Espandere Database. Seleziona un database utente, oppure espandi Database di Sistema e seleziona un database di sistema.
Fare clic con il pulsante destro del mouse sul database, scegliere Tasks, scegliere Restore e quindi selezionare Transaction Log. Si apre la finestra di dialogo Ripristina registro transazioni.
Nota
Se Transaction Log non è disponibile, potresti dover prima ripristinare un backup completo o differenziale. Usa la finestra di dialogo Ripristina database.
Nella pagina Generale , nella casella elenco Database , seleziona il database. L'elenco mostra solo i database nello stato di ripristino.
Per specificare la sorgente e la posizione dei set di backup da ripristinare, seleziona una delle seguenti opzioni:
Da precedenti backup del database
Selezionare il database da ripristinare dall'elenco a discesa. L'elenco contiene solo database con backup registrati nella cronologia dei backup di msdb.
Da file o da nastro
Selezionare il pulsante Sfoglia (...) per aprire la finestra di dialogo Seleziona dispositivi di backup. Nella casella Tipo di supporto di backup, seleziona un tipo di dispositivo. Per aggiungere uno o più dispositivi alla casella Supporti di backup, seleziona Aggiungi.
Dopo aver aggiunto i dispositivi che desideri, seleziona OK per tornare alla pagina Generale .
Nella griglia Selezionare i backup del log delle transazioni da ripristinare selezionare i backup che si desidera ripristinare. La griglia elenca i backup dei log delle transazioni disponibili per il database selezionato. La griglia elenca i backup dei log nell'ordine dei numeri di sequenza log (LSN) che contengono, e devi ripristinarli in questo ordine.
Nella tabella seguente vengono elencate le intestazioni delle colonne della griglia con una descrizione dei rispettivi valori.
Intestazione Valore Recupera Caselle selezionate indicano i set di backup da ripristinare. Nome Nome del set di backup. Componente Componente di cui viene eseguito il backup: Database, File, o <blank> (nel caso di log delle transazioni). Database Nome del database su cui viene eseguita l'operazione di backup. Data di inizio Data e ora di inizio dell'operazione di backup, visualizzate in base alle impostazioni internazionali del client. Data di fine Data e ora di fine dell'operazione di backup, visualizzate in base alle impostazioni internazionali del client. Primo LSN Numero di sequenza del file di log della prima transazione nel set di backup. Vuoto per i backup dei file. Ultimo LSN Numero di sequenza del file di log dell'ultima transazione nel set di backup. Vuoto per i backup dei file. Checkpoint LSN Numero di sequenza del file di log del checkpoint più recente al momento della creazione del backup. LSN completo Numero di sequenza del file di log dell'operazione più recente di backup completo del database. Server Nome dell'istanza del motore di database in cui è stata eseguita l'operazione di backup. Nome utente Nome dell'utente che ha eseguito l'operazione di backup. Dimensione Dimensioni in byte del set di backup. Posizione Posizione del set di backup nel volume. Scadenza Data e ora di scadenza del set di backup. Seleziona una delle opzioni seguenti.
Punto nel tempo
Mantieni il predefinito (più recente possibile), oppure seleziona il pulsante di navigazione per aprire la finestra di dialogo Ripristino temporizzato e seleziona una data e un'ora specifiche.
Transazione contrassegnata
Consente di ripristinare il database fino a una transazione contrassegnata in precedenza. Questa opzione apre la finestra di dialogo Seleziona Transazione Segnata. La griglia in questa finestra di dialogo elenca le transazioni contrassegnate nei backup del registro delle transazioni selezionati.
Per impostazione predefinita, l'operazione di ripristino arriva fino a, ma esclude, la transazione contrassegnata. Per includere la transazione contrassegnata nel ripristino, seleziona Includi transazione contrassegnata.
Nella tabella seguente vengono elencate le intestazioni delle colonne della griglia con una descrizione dei rispettivi valori.
Intestazione Valore <vuoto> Visualizza una casella di controllo per selezionare il segno. Marchio di transazione Nome della transazione contrassegnata specificato dall'utente al momento della conferma della transazione. Data Data e ora assegnate alla transazione quando ne è stato eseguito il commit. Data e ora della transazione sono visualizzate come registrate nella tabella logmarkhistory in msdb, non secondo la data e l'ora del computer client. Descrizione Descrizione della transazione contrassegnata, se presente, specificata dall'utente al momento del commit della transazione. LSN Numero di sequenza del file di log (LSN) della transazione contrassegnata. Database Nome del database in cui è stato eseguito il commit della transazione contrassegnata. Nome utente Nome dell'utente del database che ha eseguito il commit della transazione contrassegnata.
Per visualizzare o selezionare le opzioni avanzate, selezionare Opzioni nel riquadro Selezione pagina .
Nella sezione Opzioni di ripristino, seleziona tra le seguenti opzioni:
Mantieni le impostazioni di replica (WITH KEEP_REPLICATION)
Preserva le impostazioni di replica quando ripristini un database pubblicato su un server diverso da quello in cui il database è stato creato.
Questa opzione è disponibile solo con l'opzione Lascia il database pronto all'uso annullando le transazioni non confermate... (descritta più avanti), che equivale al ripristino di un backup con l'opzione RECOVERY .
Selezionare questa opzione equivale a usare l'opzione KEEP_REPLICATION in un'istruzione Transact-SQL RESTORE .
Chiedi conferma prima del ripristino di ogni backup
Prima di ogni backup effettuato dopo il primo, questa opzione apre la finestra di dialogo Continue with Restore, che chiede se vuoi continuare la sequenza di ripristino. La finestra di dialogo mostra il nome del set di media successivo (se disponibile), il nome del set di backup e la descrizione del set di backup.
Questa opzione è particolarmente utile quando devi scambiare nastri per diversi set di supporti, ad esempio quando il server ha un solo dispositivo a nastro. Seleziona OK solo quando sei pronto a continuare.
Se selezioni No, il database rimane in stato di ripristino. Puoi continuare la sequenza di ripristino più avanti, dall'ultimo ripristino completato. Se il backup successivo è un backup di dati o differenziale, utilizzare nuovamente l'attività Ripristina database . Se il backup successivo è un backup del log, utilizzare l'attività Ripristina log delle transazioni .
Limita accesso al database ripristinato (WITH RESTRICTED_USER)
Consente di rendere disponibile il database ripristinato solo per i membri di db_owner, dbcreatoro sysadmin.
Selezionare questa opzione equivale a usare l'opzione RESTRICTED_USER in un'istruzione Transact-SQL RESTORE .
Nello stato di recupero, specifica lo stato del database dopo l'operazione di ripristino.
Lascia il database pronto per l'uso eseguendo il rollback delle transazioni di cui non è stato eseguito il commit. Non si possono ripristinare ulteriori log delle transazioni. (RESTORE CON RIPRISTINO)
Esegue il recupero del database. Questa opzione è equivalente all'opzione RECOVERY in un'istruzione Transact-SQL RESTORE .
Scegli questa opzione solo se non hai altri backup di log da ripristinare.
Lascia il database non operativo e non annullare le transazioni non confermate. I log delle transazioni aggiuntivi possono essere ripristinati. (RESTORE SENZA RECUPERO)
Lascia il database non ripristinato, nello stato RESTORING. Questa opzione equivale all'uso dell'opzione NORECOVERY in un'istruzione Transact-SQL RESTORE.
Quando scegli questa opzione, l'opzione Preserva le impostazioni di replica non è disponibile.
Lascia il database in modalità sola lettura. Annulla le transazioni di cui non è stato eseguito il commit, ma salva le azioni di annulamento in un file in modo che gli effetti del recupero possano essere ripristinati. (RESTORE CON STANDBY)
Il database viene lasciato nello stato di standby. Questa opzione equivale all'uso dell'opzione STANDBY in un'istruzione Transact-SQL RESTORE.
Questa opzione richiede un file di standby.
Se lasci il database in modalità di sola lettura, specifica un nome file di riserva nella casella di testo File di standby. Puoi cercare il file di standby o digitarne il percorso nella casella di testo.
Usare Transact-SQL
Importante
Per evitare ambiguità, specifica esplicitamente WITH NORECOVERY o WITH RECOVERY in ogni istruzione RESTORE, specialmente negli script.
Per ogni backup del log delle transazioni prima dell'ultimo nella sequenza di ripristino, esegui un'istruzione
RESTORE LOGcon i seguenti valori:- Il nome del database a cui applicare il registro delle transazioni.
- Il dispositivo di backup che contiene il backup del log delle transazioni.
- La clausola
NORECOVERY.
Il seguente esempio mostra la sintassi di base, dove
<database_name>è il nome del database e<backup_device>il nome del dispositivo che contiene il backup del log.RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY [ ; ]Se la tua sequenza di ripristino ha un solo backup del log, salta questo passaggio.
Per l'ultimo backup del log nella tua sequenza di ripristino, usa uno dei seguenti metodi per recuperare il database:
Recupera il database come parte dell'ultima
RESTORE LOGistruzione SQL:RESTORE LOG <database_name> FROM <backup_device> WITH RECOVERY; GORecupera il database in seguito, con un'istruzione separata
RESTORE DATABASE:RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY; RESTORE DATABASE <database_name> WITH RECOVERY; GOIl database rimane in stato di ripristino dopo l'ultima
RESTORE LOGistruzione. Puoi verificare di aver ripristinato ogni backup dei log necessario, e poi ripristinare il database. Questo approccio è spesso utile per un ripristino point-in-time.
Esempi (Transact-SQL)
Per impostazione predefinita, il database AdventureWorks2025 utilizza il modello di recupero semplice. I seguenti esempi richiedono backup effettuati secondo il modello di recupero completo. Prima di creare quei backup, esegui la seguente istruzione per cambiare il modello di recupero:
ALTER DATABASE AdventureWorks2025
SET RECOVERY FULL;
Il passaggio al modello completo di recupero avviene solo dopo il primo backup dei dati. Fai un backup completo del database per avviare la catena di log.
Gli esempi seguenti ripristinano i backup in un'istanza in cui il AdventureWorks2025 database non esiste, ad esempio su un server diverso.
A. Applica un singolo backup del log delle transazioni
Il seguente esempio ripristina il AdventureWorks2025 database da un backup completo su un dispositivo di backup chiamato AdventureWorks2025_1. Successivamente applica il primo backup del log delle transazioni da un dispositivo di backup chiamato AdventureWorks2025_log. Infine, recupera il database.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
B. Applica più backup del log delle transazioni
Il seguente esempio ripristina il AdventureWorks2025 database da un backup completo su un dispositivo di backup chiamato AdventureWorks2025_1. Applica poi, uno alla volta, i primi tre backup del log delle transazioni da un dispositivo di backup chiamato AdventureWorks2025_log. Infine, recupera il database.
RESTORE DATABASE AdventureWorks2025
FROM AdventureWorks2025_1
WITH NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 1,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 2,
NORECOVERY;
GO
RESTORE LOG AdventureWorks2025
FROM AdventureWorks2025_log
WITH FILE = 3,
NORECOVERY;
GO
RESTORE DATABASE AdventureWorks2025
WITH RECOVERY;
GO
Usare PowerShell.
Usa il Restore-SqlDatabase cmdlet e imposta il -RestoreAction parametro su Log. Includi il parametro -NoRecovery per ogni ripristino nella sequenza tranne l'ultimo. Ometti -NoRecovery nell'ultimo ripristino del log per recuperare il database.
Nota
Questi esempi richiedono il SqlServer modulo. Per altre informazioni, vedere Provider PowerShell per SQL Server.
Per la sintassi completa, vedi Restore-SqlDatabase.
Esempi (PowerShell)
Gli esempi seguenti ripristinano i backup in un'istanza in cui il AdventureWorks2025 database non esiste, ad esempio su un server diverso.
A. Applica un singolo backup del log delle transazioni
Il seguente esempio ripristina il AdventureWorks2025 database da un backup completo del database, lasciando il database nello stato di ripristino. Successivamente applica un backup del log delle transazioni e recupera il database.
$instance = "Computer\Instance"
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_log1.trn"
RestoreAction = "Log"
}
Restore-SqlDatabase @logRestore
B. Applica più backup del log delle transazioni
Il seguente esempio ripristina l'intero backup del database e poi applica tre backup del log delle transazioni in sequenza. Ogni ripristino tranne l'ultimo usa -NoRecovery, quindi l'ultimo ripristino di log recupera il database.
$instance = "Computer\Instance"
$logBackups = @(
"C:\Backup\AdventureWorks2025_log1.trn",
"C:\Backup\AdventureWorks2025_log2.trn",
"C:\Backup\AdventureWorks2025_log3.trn"
)
$fullRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = "C:\Backup\AdventureWorks2025_full.bak"
RestoreAction = "Database"
NoRecovery = $true
}
Restore-SqlDatabase @fullRestore
for ($i = 0; $i -lt $logBackups.Count; $i++) {
$isLast = ($i -eq $logBackups.Count - 1)
$logRestore = @{
ServerInstance = $instance
Database = "AdventureWorks2025"
BackupFile = $logBackups[$i]
RestoreAction = "Log"
NoRecovery = -not $isLast
}
Restore-SqlDatabase @logRestore
}
Attività correlate
- Eseguire il backup di un log delle transazioni
- Ripristinare un backup del database con SSMS
- Ripristino del database al punto di errore - Ripristino completo
- Ripristinare un database di SQL Server a un punto specifico nel tempo (modello di recupero completo)
- Ripristinare un database in corrispondenza di una transazione contrassegnata (SQL Server Management Studio)