SQL 恢复恢复;挂在 100%

SQL RESTORE WITH RECOVERY; Hangs at 100%

我对此做了很多研究。

我正在尝试使用 SQL Server 2014 恢复数据库,但它一直挂在 100%。

很多人建议解决方案是确保使用恢复选项进行恢复。

我试过了,它仍然挂在 100%。我已经尝试通过 SSMS 恢复对话框,我已经尝试 运行 以下 SQL 语句:

USE [master]
RESTORE DATABASE [MyDB]
FROM  DISK = N'C:\MyDB_backup_2015_05_05_010004_1506557.bak'
WITH  
    FILE = 1,  
    MOVE N'MyDB_Data' TO N'F:\MSSQL\DATA\MyDB.mdf',  
    MOVE N'MyDB_Log' TO N'F:\MSSQL\DATA\MyDB_1.ldf',  
    NOUNLOAD,  
    REPLACE,  
    RECOVERY,
    STATS = 2
GO

当我通过以下方式检查命令状态时:

SELECT r.status, r.command, r.wait_type, r.percent_complete
FROM sys.dm_exec_requests r
WHERE r.command like '%restore%' or r.command like '%backup%'

我得到:

status: suspended
command: RESTORE DATABASE
wait_type: BACKUPTHREAD
percent_complete: 100

根据我的阅读,这意味着 RESTORE 正在等待 BACKUP 完成,但是我的查询没有返回 BACKUP 命令到 sys.dm_exec_requests

EDIT:再次尝试 运行 上面的查询从头开始观察 RESTORE 的进度,我可以看到 'percent_complete' 值正在稳步增加,尽管 'status' 仍然是 'suspended' 并且 'wait_type' 仍然是 'BACKUPTHREAD'.

所以尽管它是 'suspended' 它实际上仍在执行 RESTORE。

所以我很茫然...

有人知道这里发生了什么或有任何关于如何诊断问题的提示吗?

干杯!

事实证明这个问题与环境有关并且非常简单:

首先,我试图从原始数据库的非收缩备份版本进行备份。

日志文件的大小实际上是一个已知问题,因此我们通常从缩小版本的数据库进行备份。

因此,如果有人遇到类似问题,请先尝试缩小数据库,然后备份并从中恢复。

其次,我试图通过 USB3 将数据库备份到外部驱动器。

此外,有趣的是,我观察了正在运行的恢复命令的进度,它的状态也为 'suspended' 和 'wait_type' "BACKUPTHREAD" - 即使它仍在进行中(如percent_complete) 列中的完成百分比明显增加!所以我仍然不知道那是什么......

但至少我现在可以恢复我的备份:-)

由于数据库的大小,我遇到了同样的问题。 虽然备份显示 9 MB,但当我在 SQL 服务器管理和 select 属性中右键单击数据库时,显示的大小是 25 GB! 我所做的是将数据库更改为 "Simple Recovery",缩小日志文件,再次备份,现在可以恢复了。