执行备份时,restore headeronly 有什么用?

Nic*_*nay 10 sql-server backup sql-server-2012

当我使用以下查询监控我的备份时:

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

我注意到在备份之前,SQL Server 只在备份之后执行还原标头。

我想知道它有什么用处,以及它的执行时间是否可以以某种方式减少。它似乎比实际备份花费的时间更长。

Kin*_*hah 7

我注意到在备份之前,SQL Server 只在备份之后执行还原标头。

这可能是 sql server 内部执行的还原步骤的一部分。

您可以使用DBCC TRACEON(3604, 3605, 3004);. 在非生产服务器上仅将其用于教育目的。

在此处输入图片说明

在此处输入图片说明

正如您在上面看到的,恢复的主要阶段3 个 - 数据复制、撤消和重做阶段以及其他子阶段,其中还包括打开和加载备份集。

它似乎比实际备份花费的时间更长。

为了缩短恢复时间,您应该

  • 启用即时文件初始化。
  • with REPLACE对现有数据库使用 T-SQL 和还原,而不是删除和还原。
  • 确保对 msdb 进行适当的维护。
  • 检查 VLF。VLF 越多,恢复时间越长。

请参阅@AaronBertrand 的“照看慢速备份或恢复”


Han*_*non 6

RESTORE HEADERONLY 允许 SQL Server 在实际备份之前检查目标文件的某些属性。

您可以通过BACKUP DATABASE ...在 SQL Server 代理作业中使用T-SQL 运行备份而不是使用充满问题的维护计划 GUI来防止这种情况发生。