我备份了一个数据库:

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

当前回答

这可能是相当明显的,但它刚刚绊倒了我:

如果您正在进行尾日志备份,则在SSMS还原向导中选中此选项-“使源数据库处于还原状态(WITH NORECOVERY)”也可能导致此问题。

其他回答

在我的例子中,使用SQL命令删除挂起状态为“还原…”的数据库就足够了

 drop database <dbname> 

在查询窗口中。

然后我右键单击Databases并选择Refresh,这将删除SQL Server Management Studio (SSMS)中的条目。之后,我做了一个新的恢复,工作良好(注意,使它脱机不起作用,重新启动SQL服务不起作用,服务器重新启动也不起作用)。

RESTORE DATABASE {DatabaseName}
   FROM DISK = '{databasename}.bak'
   WITH REPLACE, RECOVERY

我有一个类似的事件,停止日志运输辅助服务器。 在执行从日志发送中删除服务器并停止从主服务器发送日志的命令后,辅助服务器上的数据库在执行命令后陷入恢复状态

RESTORE DATABASE <database name> WITH RECOVERY

数据库消息:

RESTORE DATABASE在18.530秒内成功处理0页 (0.000 MB /秒)。

在那18秒之后,数据库又可以使用了。

如果启用了快照,删除被卡住的数据库也会有问题。对我来说,这很有效:

首先,我遵循了Tipu Delacablu的步骤(阅读一些帖子) 运行命令:drop database [your database],这将给您一个错误,告诉您快照数据库的名称 执行命令drop database [snapshot database],然后再执行步骤2中的命令。

我也有同样的问题……虽然我不知道为什么我的数据库遇到这个问题,因为我的驱动器没有满…好像是被损坏了什么的。我尝试了以上所有的,没有一个完全工作,我特别认为建议停止服务和删除mdf和ldf文件将工作…但在恢复时仍然死机?

我最终通过删除上面提到的文件来解决这个问题,但我没有尝试再次恢复DB,而是复制了新鲜的.mdf和.ldf文件,并使用前端附件向导附加这些文件。如释重负,它起作用了!!

它花了永远复制的新文件,因为我正在使用虚拟机…所以用剪贴板复制粘贴本身就花了一个小时,所以我只推荐这是最后一次尝试。