Per impostazione predefinita, ogni RESTORE DATABASE
viene fornito con l' RECOVERY
installazione. Le opzioni "NORECOVERY" indicano sostanzialmente a SQL Server che il database è in attesa di altri file di ripristino (potrebbe essere un file DIFF e un file LOG e, se possibile, includere un file di backup del registro di coda). Le opzioni "RECOVERY" completano tutte le transazioni e consentono al database di eseguire le transazioni.
Così:
- se il database è impostato con il modello di recupero SEMPLICE , è possibile eseguire un ripristino COMPLETO con
NORECOVERY
opzione solo quando si dispone di un backup DIFF . Nessun backup LOG è consentito nel database del modello di recupero SEMPLICE .
- Altrimenti, se il database è impostato con FULL modello di recupero o BULK-LOGGED , è possibile eseguire un ripristino FULL seguito
NORECOVERY
dall'opzione, quindi eseguire un DIFF seguito da NORECOVERY
e, infine, eseguire il ripristino LOG con l' RECOVERY
opzione.
Ricorda, L'ULTIMA RICHIESTA DI RESTAURO DEVE AVERE RECOVERY
OPZIONE . Potrebbe essere un modo esplicito o meno. In therms di T-SQL, la situazione:
1.
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak WITH FILE = 1, [REPLACE],NOUNLOAD,
RECOVERY -- This option could be omitted.
GO
L'opzione WITH REPLACE deve essere utilizzata con cautela poiché può causare la perdita di dati
Oppure, se si esegue un backup COMPLETO e DIFF, è possibile utilizzare questo
USE [master]
GO
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
RESTORE DATABASE Database_name
FROM DISK =N'\\path_of_**diff**backup_file.bak' WITH FILE = 1,
NOUNLOAD, RECOVERY
GO
2. USE [master]
GO
-- Perform a Tail-Log backup, if possible.
BACKUP LOG Database_name
GO
-- Restoring a FULL backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_backup_file.bak' WITH FILE = 1,
NOUNLOAD,NORECOVERY
GO
-- Restore the last DIFF backup
RESTORE DATABASE Database_name
FROM DISK = N'\\path_of_DIFF_backup_file.bak' WITH FILE = 1,
NORECOVERY,NOUNLOAD
GO
-- Restore a Log backup
RESTORE LOG Database_name
FROM DISK = N'path_of_LOG_backup_file.trn' WITH FILE = 2,
RECOVERY, NOUNLOAD
GO
Naturalmente, è possibile eseguire un ripristino con l'opzione STATS = 10 che indica a SQL Server di segnalare ogni 10% completato.
Se preferisci, puoi osservare il processo o ripristinarlo in una query basata in tempo reale. Come segue:
USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO
Spero che questo aiuto.
DROP DATABASE db
comando tramite SSMS e ha funzionato (in precedenza utilizzavo SSMS da un'altra macchina per emettere i comandi). Immagino che anche le altre soluzioni avrebbero funzionato.