À quoi sert la restauration d'en-tête uniquement lors d'une sauvegarde?

10

Lorsque je surveille mes sauvegardes avec la requête suivante:

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%'

Je remarque qu'avant la sauvegarde, SQL Server effectue un en-tête de restauration uniquement puis la sauvegarde.

Je me demandais à quoi cela servait et si son temps d'exécution pouvait être réduit d'une manière ou d'une autre. Cela semble prendre plus de temps que la sauvegarde réelle.

Nicolas de Fontenay
la source

Réponses:

7

Je remarque qu'avant la sauvegarde, SQL Server effectue un en-tête de restauration uniquement puis la sauvegarde.

Cela peut faire partie des étapes de restauration effectuées en interne par le serveur SQL.

Vous pouvez examiner les phases de restauration à l'aide de DBCC TRACEON(3604, 3605, 3004);. Utilisez-le uniquement à des fins éducatives sur un serveur NON PROD.

entrez la description de l'image ici

entrez la description de l'image ici

Comme vous pouvez le voir ci-dessus, il existe essentiellement 3 phases principales de restauration - la copie de données, la phase d'annulation et de rétablissement ainsi que d'autres sous-phases où elle ouvre et charge également le jeu de sauvegarde.

Cela semble prendre plus de temps que la sauvegarde réelle.

Pour améliorer le temps de restauration, vous devez

  • Activez l'initialisation instantanée des fichiers.
  • Utilisez T-SQL et restaurez with REPLACEune base de données existante au lieu de la supprimer et de la restaurer.
  • Assurez-vous de bien entretenir msdb.
  • Vérifiez les VLF. Plus il y a de VLF, plus le temps de restauration est long.

Reportez-vous à Babysitting d'une sauvegarde ou d'une restauration lente par @AaronBertrand .

Kin Shah
la source
6

RESTORE HEADERONLY permet à SQL Server de vérifier le fichier cible pour certaines propriétés avant la sauvegarde réelle.

Vous pouvez éviter cela en exécutant les sauvegardes à l'aide de T-SQL BACKUP DATABASE ...dans un travail de l'Agent SQL Server au lieu d'utiliser l'interface graphique du plan de maintenance, qui est remplie de problèmes.

Max Vernon
la source
3

RESTORE HEADERONLYpeut prendre du temps si votre sauvegarde contient beaucoup de fichiers journaux virtuels (VLF). Si vous réduisez et régénérez le fichier journal des bases de données source à une taille appropriée, vous pourriez avoir du succès dans la résolution du temps nécessaire pour effectuer des restaurations.

Avarkx
la source