Quando monitoro meus backups com a seguinte consulta:
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%'
Percebo que antes do backup, o SQL Server executa um cabeçalho de restauração somente depois do backup.
Eu queria saber qual seria a utilidade disso e se seu tempo de execução poderia ser reduzido de alguma forma. Parece demorar mais do que o backup real.
Isso pode fazer parte das etapas de restauração executadas internamente pelo SQL Server.
Você pode examinar as fases de restauração usando DBCC TRACEON(3604, 3605, 3004);. Use-o apenas para fins educacionais em um servidor NÃO PROD.
Como você pode ver acima, existem essencialmente 3 fases principais de restauração - fase de cópia de dados, desfazer e refazer, juntamente com outras subfases em que abre e carrega o conjunto de backup também.
Para melhorar o tempo de restauração, você deve
with REPLACE
para um banco de dados existente em vez de descartar e restaurar.Consulte Babysitting a slow backup or restore by @AaronBertrand .
RESTORE HEADERONLY
permite que o SQL Server verifique o arquivo de destino para determinadas propriedades antes do backup real.Você pode evitar isso executando os backups usando o T-SQL
BACKUP DATABASE ...
em um trabalho do SQL Server Agent em vez de usar a GUI do plano de manutenção, que está repleta de problemas.RESTORE HEADERONLY
pode levar muito tempo se o seu backup contiver muitos arquivos de log virtual (VLFs). Você pode ter algum sucesso em lidar com o tempo necessário para executar restaurações se reduzir e aumentar novamente o arquivo de log dos bancos de dados de origem para um tamanho apropriado.