我备份了一个数据库:
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
你需要使用该WITH RECOVERY选项和数据库RESTORE命令,将数据库联机作为还原过程的一部分。
这当然只有在你不打算恢复任何事务日志备份时,也就是说,你只希望恢复数据库备份,然后才能访问数据库。
你的命令应该是这样的,
RESTORE DATABASE MyDatabase
FROM DISK = 'MyDatabase.bak'
WITH REPLACE,RECOVERY
在SQL Server Management Studio中使用还原数据库向导可能会获得更多成功。这样,您可以选择特定的文件位置,覆盖选项和WITH恢复选项。有时候,恢复过程只是因为数据库文件的大小而停滞不前。
备份了一个数据库:
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