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",缩小日志文件,再次备份,现在可以恢复了。
我对此做了很多研究。
我正在尝试使用 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",缩小日志文件,再次备份,现在可以恢复了。