Per impostazione predefinita, ogni RESTORE DATABASEviene fornito con l' RECOVERYinstallazione. 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
NORECOVERYopzione 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
NORECOVERYdall'opzione, quindi eseguire un DIFF seguito da NORECOVERYe, infine, eseguire il ripristino LOG con l' RECOVERYopzione.
Ricorda, L'ULTIMA RICHIESTA DI RESTAURO DEVE AVERE RECOVERYOPZIONE . 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 dbcomando 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.