SQL RESTORE WITH RECOVERY; 挂起率为100%

JTe*_*ech 8 sql-server restore sql-server-2014

我对此做了很多研究.

我正在尝试使用SQL Server 2014恢复数据库,并且它一直保持100%的挂起状态.

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

我试过了,它仍然挂在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
Run Code Online (Sandbox Code Playgroud)

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

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%'
Run Code Online (Sandbox Code Playgroud)

我明白了:

status: suspended
command: RESTORE DATABASE
wait_type: BACKUPTHREAD
percent_complete: 100
Run Code Online (Sandbox Code Playgroud)

从我的阅读中暗示RESTORE正在等待BACKUP完成,但是没有从我的查询返回到sys.dm_exec_requests的BACKUP命令

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

因此,尽管它被"暂停",它实际上仍在执行RESTORE.

所以我很茫然......

任何人都有任何想法在这里发生了什么或任何有关如何诊断问题的提示?

干杯!

JTe*_*ech 6

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

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

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

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

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

此外,有趣的是,我观察了工作恢复命令的进度,它也有一个“暂停”状态,带有“wait_type”“BACKUPTHREAD”——即使它仍在进行中(正如在百分比完成中增加的完成百分比所证明的那样)柱子!所以我仍然不知道那是什么......

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