2

我有一个数据库在 SQL 企业管理器中显示为“(正在恢复...)”

如果我执行 SP_WHO,则没有恢复过程。

服务器上的磁盘和 CPU 活动非常低

我认为它根本没有恢复。

我怎样才能摆脱这个?

我尝试重命名底层 MDF 文件,但即使我执行“NET STOP MSSQLSERVER”,它也会告诉我文件已打开。

我尝试使用 PROCEXP 来查找打开文件的进程,但即使是最新的 PROCEXP 在 Windows Server 2003 R2 x64 上似乎也无法做到这一点。下部窗格视图为空白。

在 SQL Server 日志中,它说“数据库被标记为正在恢复,并且处于不允许运行恢复的状态”

4

3 回答 3

11

Sql Server 有两种备份类型:

  • 完全备份,包含整个数据库
  • 事务日志备份,仅包含自上次完整备份以来的更改

还原时,Sql Server 会询问您是否要在完整备份后还原其他日志。如果您选择此选项,称为 WITH NORECOVERY,则数据库将处于正在恢复状态。它将等待更多的事务日志被恢复。

您可以使用以下命令强制它退出恢复模式:

RESTORE DATABASE <DATABASE_NAME> WITH RECOVERY

如果此命令出错,请分离数据库,删除 MDF 文件,然后从头开始恢复。如果它一直失败,则您的备份文件可能已损坏。

这是恢复选项的屏幕截图,选择了默认选项。第二个选项将使数据库处于恢复状态。

恢复选项图片 http://img193.imageshack.us/img193/8366/captureu.png

PS1。您正在运行 64 位版本的进程资源管理器吗?验证您是否在任务管理器中看到 procexp64.exe。

PS2。这更像是serverfault的问题。

于 2009-05-16T22:23:17.110 回答
0

执行 RESTORE DATABASE/RESTORE LOG 命令时,默认使用 WITH RECOVERY 选项。如果您陷入“恢复”过程,您可以通过执行以下命令使数据库恢复在线状态:

RESTORE DATABASE YourDB WITH RECOVERY
GO

您可以在此 SO 帖子https://stackoverflow.com/a/21192066/2808398上查找更多选项和一些第三方工具

于 2014-03-10T19:53:37.627 回答
-1

如果您想摆脱文件上的锁定,我建议您获取 Unlocker http://www.emptyloop.com/unlocker/

它将为您提供解锁文件或终止锁定文件的进程的选项。在 mdf 和 ldf 文件上运行它。

另一种选择是尝试从 Enterprise Manager 或 Sql Management Studio 中分离文件,然后重新附加数据库。您可以在运行解锁器之前尝试此操作,以查看 sql server 是否只会释放 mdf 和 ldf 文件。

注意:如果您终止该进程,您可能会丢失数据或数据可能会损坏,因此只有在您尝试摆脱它并且您拥有经过测试的良好备份时才使用此选项。

于 2009-05-16T23:09:49.417 回答