当我使用以下查询监控我的备份时:
SELECT command, percent_complete,
'elapsed' = total_elapsed_time / 60000.0,
'remaining' = estimated_completion_time / 60000.0
FROM sys.dm_exec_requests
WHERE command like 'BACKUP%'
or command like 'RESTORE%'
我注意到在备份之前,SQL Server 只在备份之后才执行还原标头。
我想知道它有什么用,是否可以以某种方式减少它的执行时间。它似乎需要比实际备份更长的时间。
这可能是 sql server 在内部执行的还原步骤的一部分。
您可以使用DBCC TRACEON(3604, 3605, 3004);. 仅在 NON PROD 服务器上用于教育目的。
正如您在上面看到的,恢复基本上有 3 个主要阶段 - 数据复制、撤消和重做阶段以及其他子阶段,其中还打开并加载备份集。
为了缩短恢复时间,您应该
with REPLACE
对现有数据库使用 T-SQL 和还原,而不是删除和还原。请参阅@AaronBertrand 的“照顾慢速备份或恢复”。
RESTORE HEADERONLY
允许 SQL Server 在实际备份之前检查目标文件的某些属性。您可以通过在 SQL Server 代理作业中使用 T-SQL 运行备份来防止这种情况发生,
BACKUP DATABASE ...
而不是使用经常出现问题的维护计划 GUI。RESTORE HEADERONLY
如果您的备份包含大量虚拟日志文件 (VLF),则可能需要很长时间。如果您将源数据库日志文件缩小并重新增长到适当的大小,您可能会成功解决执行恢复所需的时间长度。