【发布时间】:2010-10-05 23:29:00
【问题描述】:
我备份了一个数据库:
BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
然后尝试恢复它:
RESTORE DATABASE MyDatabase
FROM DISK = 'MyDatabase.bak'
WITH REPLACE --force restore over specified database
现在数据库卡在恢复状态。
有人推测这是因为备份中没有日志文件,需要使用以下方式前滚:
RESTORE DATABASE MyDatabase
WITH RECOVERY
当然,除了失败:
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.
而在灾难性情况下,您想要的正是无法进行的恢复。
备份包含数据和日志文件:
RESTORE FILELISTONLY
FROM DISK = 'MyDatabase.bak'
Logical Name PhysicalName
============= ===============
MyDatabase C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase.mdf
MyDatabase_log C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabase_log.LDF
【问题讨论】:
-
我遇到了完全相同的问题,所有解决方案都失败了。有趣的是,我直接登录到 SQL 服务器并通过 SSMS 发出
DROP DATABASE db命令并且它工作(之前我使用另一台机器上的 SSMS 来发出命令)。我猜其他解决方案也可以。
标签: sql-server backup restore