小编典典

SQL Server:数据库卡在“正在恢复”状态

all

我备份了一个数据库:

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

阅读 691

收藏
2022-03-06

共1个答案

小编典典

您需要将该WITH RECOVERY选项与您的数据库RESTORE命令一起使用,以使您的数据库在线作为恢复过程的一部分。

当然,这仅适用于您不打算恢复任何事务日志备份的情况,即您只希望恢复数据库备份然后能够访问数据库。

你的命令应该是这样的,

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE,RECOVERY

使用 SQL Server Management Studio 中的还原数据库向导可能会获得更多成功。这样,您可以选择特定的文件位置、覆盖选项和 WITH
Recovery 选项。

2022-03-06