SQL Server中的数据库处于恢复模式

4
我有两个位于同一服务器上的 Microsoft SQL Server 数据库。其中一个可以成功地远程访问,但另一个则不行。在错误日志中,它返回以下信息:
“登录失败,用户 'adminUsr'。原因:无法打开明确指定的数据库 'alg_test.alg_test'。[CLIENT: ]”
“错误:18456,严重性:14,状态:38。”
然后我进入 Microsoft SQL Server 管理并使用以下命令检查数据库的状态:
SELECT databasepropertyex('alg_test.alg_test', 'STATUS')

我得到了如下信息:

正在恢复中

看起来数据库正在持续恢复。我该怎么解决这个问题?最终如何能够远程访问数据库。


MSDN所述:如果恢复成功,数据库将自动变为在线状态。 如果恢复失败,则数据库将转为Suspect模式。此时数据库不可用。因此,最终它将变成在线状态或者SUSPECT状态。如果恢复时间太长,您可以通过Trace Flag启动SQL Server而无需进行恢复。 - NickyvV
Trace Flag 3608可以帮助您解决这个问题。但是请注意,正如文章所述:注意:在正常操作期间不要使用。 - NickyvV
3个回答

11

检查 SQL Server 错误日志以查看相关消息,了解数据库正在恢复的原因。常见原因包括:

  1. 使用全备份、差异备份和日志备份的 NORECOVERY 选项来还原数据库,但在最后一次还原时没有指定 RECOVERY。这种情况的解决方法是执行 RESTORE <your database> WITH RECOVERY; 来回滚未提交的事务并将数据库上线。

  2. 由于大型数据修改操作而导致事务日志已满,SQL Server 正在回滚事务以恢复数据库,这可能需要相当长的时间。错误日志将包括恢复进度消息。如果等待的时间比较长,从备份中恢复数据库可能更为迅速。请注意,如果在数据库恢复过程中重新启动 SQL Server,则恢复将从服务启动时重新开始。


你有一个更好的解释。 - mfredy
2
如果 RESTORE DATABASE mydatabase WITH RECOVERY 对您无效,那么尝试将数据库脱机,然后再上线。 - Mohamad Mahmoud Darwish
完美的解释。令人惊讶的是,在一次大规模的数据修改操作被取消后,我的数据库陷入了恢复状态,并且无论重启多少次都无法解决。 - e4stwood

4
你可以尝试使用这个脚本。
RESTORE DATABASE mydatabase WITH RECOVERY

这将完成没有备份文件的恢复过程。如果您收到“数据库正在使用”的错误消息,我认为您应该尝试停止服务,删除数据库,然后使用“恢复”选项进行还原。


这是正常恢复吗? - TheGameiswar
是的 @TheGameiswar - mfredy

0

试试这个:

Use [master]
GO

RESTORE DATABASE [DataBaseName] WITH RECOVERY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接