我备份了一个数据库:
BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
Run Code Online (Sandbox Code Playgroud)
然后尝试恢复它:
RESTORE DATABASE MyDatabase
FROM DISK = 'MyDatabase.bak'
WITH REPLACE --force restore over specified database
Run Code Online (Sandbox Code Playgroud)
现在数据库仍处于恢复状态.
有些人认为这是因为备份中没有日志文件,需要使用以下方式前滚:
RESTORE DATABASE MyDatabase
WITH RECOVERY
Run Code Online (Sandbox Code Playgroud)
当然,除此之外,失败:
Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)
确切地说,在灾难性的情况下你想要的是一种无法恢复的恢复.
备份包含数据和日志文件:
RESTORE FILELISTONLY
FROM DISK = 'MyDatabase.bak'
Logical Name PhysicalName
============= =============== …Run Code Online (Sandbox Code Playgroud)