SQL Restore DB冻结率为100%[SQL SERVER 2008 R2]

时间:2017-11-13 16:05:47

标签: sql sql-server sql-server-2008

这是我第二次恢复我的数据库并且100%冻结,不确定原因。

10 percent processed.
20 percent processed.
30 percent processed.
40 percent processed.
50 percent processed.
60 percent processed.
70 percent processed.
80 percent processed.
90 percent processed.
100 percent processed.
Processed 16305440 pages for database 'db1', file 'db1' on file 1.
Processed 74479 pages for database 'db1', file 'db1_log' on file 1.

我已经尝试使用控制台进行恢复,并且还将命令直接运行到窗口中,并且它保持在100%,完全恢复需要63米,现在已经有一段时间了。

session_id  command Percent Complete    ETA Completion Time Elapsed Min ETA Min ETA Hours
61  RESTORE DATABASE    100.00  2017-11-13 16:02:54 69  0.00    0.00

发生了什么事?

RESTORE DATABASE [db1] FROM  DISK = N'D:\DATA\db1.bak' WITH  FILE = 1,  MOVE N'db1' TO N'D:\DATA\db1.mdf',  MOVE N'db1_log' TO N'D:\DATA\db1_1.ldf',  NOUNLOAD,  STATS = 10

SQL SERVER 2008 R2

progress status

2 个答案:

答案 0 :(得分:2)

通常,在还原数据库备份文件而不还原事务日志备份文件之后,它将使数据库无法访问,因为数据库正在等待最新的事务日志备份。如果您需要将数据库恢复为可访问状态,并且确定.bak是您需要还原的最后一个,请尝试RESTORE DATABASE db_name WITH RECOVERY

通常,恢复数据库的顺序是:

Restore database name from ... with norecovery --'.bak'
Restore database name from ... with norecovery --'.dif'
Restore database name from ... with recovery --'.TRN'

如果您不确定是否有.TRN可用,则可以在最后添加RESTORE DATABASE name WITH RECOVERY以确保在恢复作业后可以访问数据库。如果数据库之前是restored with recovery,那么它不会受到伤害,只是第二次防御xD

答案 1 :(得分:1)

您的RESTORE命令没有WITH NORECOVERY,默认值为WITH RECOVERY,因此无需执行另一个RESTORE WITH RECOVERY

请检查您的SQL Server日志。也许你会找到像

那样的人
  

N中数据库MyDB(数据库ID 5)的恢复已完成   秒(分析K ms,重做L ms,撤消M ms。)这是一个   仅供参考。无需用户操作。

这意味着即使您的数据库已恢复,数据库恢复仍未完成。当您的数据库打开时会发生这种情况  备份开始时的事务,因此这些事务应该前滚/回滚,具体取决于备份完成时是否已提交