我备份了一个数据库:

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

当前回答

请使用以下命令解决此问题

RESTORE DATABASE [DatabaseName] WITH RECOVERY

其他回答

我知道为什么了。

如果发出RESTORE DATABASE命令的客户端在恢复期间断开连接,则恢复将卡住。

奇怪的是,当客户机连接告诉服务器恢复数据库时,除非客户机一直保持连接,否则服务器不会完成恢复。

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

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

你试过运行验证吗?确保这是声音备份。

http://msdn.microsoft.com/en-us/library/ms188902.aspx

在我的情况下,我只是右键单击数据库,然后任务—>恢复—>数据库—>Ok,一切都变得很好。

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