Standardmäßig wird jeder RESTORE DATABASE
mit RECOVERY
Setup geliefert. Die Option 'NORECOVERY' teilt dem SQL Server im Wesentlichen mit, dass die Datenbank auf weitere Wiederherstellungsdateien wartet (dies kann eine DIFF- und eine LOG- Datei sein und, falls möglich, eine Tail-Log-Sicherungsdatei enthalten). Mit den Optionen 'WIEDERHERSTELLUNG' können Sie alle Transaktionen abschließen und die Datenbank für die Ausführung von Transaktionen bereitstellen.
Damit:
- Wenn Ihre Datenbank mit dem SIMPLE- Wiederherstellungsmodell eingerichtet ist, können Sie eine vollständige Wiederherstellung mit
NORECOVERY
Option nur durchführen , wenn Sie über eine DIFF- Sicherung verfügen . In der SIMPLE- Wiederherstellungsmodelldatenbank ist keine LOG- Sicherung zulässig .
- Andernfalls können Sie, wenn Ihre Datenbank mit dem Wiederherstellungsmodell FULL oder BULK-LOGGED eingerichtet ist, eine vollständige Wiederherstellung gefolgt von einer
NORECOVERY
Option durchführen, dann eine DIFF gefolgt von einer Option durchführen NORECOVERY
und schließlich eine LOG- Wiederherstellung mit RECOVERY
Option durchführen.
Denken Sie daran, DIE LETZTE RESTORE QUERY MUST HAVE RECOVERY
OPTION . Es könnte ein expliziter Weg sein oder nicht. In Therms von T-SQL ist die Situation:
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
Die Option WITH REPLACE muss mit Vorsicht verwendet werden, da dies zu Datenverlust führen kann
Wenn Sie eine FULL- und DIFF-Sicherung durchführen, können Sie diese verwenden
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
Natürlich können Sie eine Wiederherstellung mit der Option STATS = 10 durchführen , die den SQL Server anweist , alle 10% abgeschlossen zu melden.
Wenn Sie möchten, können Sie den Prozess beobachten oder in Echtzeit abfragen. Wie folgt:
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
Ich hoffe das hilft.
DROP DATABASE db
Befehl über SSMS ausgegeben, und es hat funktioniert (früher habe ich SSMS von einem anderen Computer verwendet, um die Befehle auszugeben). Ich vermute, die anderen Lösungen hätten auch funktioniert.