SQL Server enregistre une opération de sauvegarde dans la table d’historique du jeu de sauvegarde lorsque vous utilisez VSS pour sauvegarder des fichiers sur un volume

Cet article décrit un comportement « par conception » qui se produit lorsque vous utilisez VSS pour sauvegarder des fichiers sur un volume.

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 951288

Symptômes

Lorsque vous utilisez une application VSS (Volume Shadow Copy Service) pour sauvegarder des fichiers sur un volume qui inclut SQL Server fichiers de base de données, SQL Server enregistre une opération de sauvegarde dans la table d’historiquebackupset. Ce comportement se produit même si vous n’avez pas réellement sauvegardé les fichiers de base de données de SQL Server.

Cause

Ce comportement se produit parce que l’application VSS appelle le service SQLWriter sur le système pendant l’opération de sauvegarde. Pour plus d’informations sur la façon dont les applications VSS interagissent avec SQL Writer, consultez SQL Server Applications de sauvegarde - Service VSS (Volume Shadow Copy Service) et SQL Writer.

Précautions à prendre si vous utilisez les entrées de la table d’historique du jeu de sauvegarde pour la récupération des données

Si vous souhaitez utiliser des entrées dans la table d’historique pour la backupset récupération de données, vous devez vérifier que les entrées représentent des opérations de sauvegarde de base de données réelles.

Vérifiez qu’une entrée représente une opération de sauvegarde de base de données native (par opposition à une sauvegarde vss instantané)

Pour ce faire, exécutez l’instruction suivante :

USE msdb
GO

SELECT server_name, database_name, backup_start_date, is_snapshot, database_backup_lsn
FROM backupset

Dans le résultat, notez la database_backup_lsn colonne et la is_snapshot colonne . Une entrée qui représente une opération de sauvegarde de base de données native présente les caractéristiques suivantes :

  • La valeur de la database_backup_lsn colonne n’est pas 0.
  • La valeur de la is_snapshot colonne est 0.

Vérifiez que le jeu de sauvegarde ne contient pas d’erreurs

Pour ce faire, exécutez l’instruction suivante :

WITH backupInfo AS( SELECT database_name AS [DatabaseName],
name AS [BackupName], is_damaged AS [BackupStatus],
backup_start_date AS [backupDate],
ROW_NUMBER() OVER(PARTITION BY database_name
ORDER BY backup_start_date DESC) AS BackupIDForDB
FROM msdb..backupset) SELECT DatabaseName
FROM backupinfo WHERE BackupIDForDB = 1 and BackupStatus=1

Si cette requête retourne des résultats, cela signifie que vous ne disposez pas de sauvegardes de base de données correctes après la date signalée. Nous vous recommandons vivement d’effectuer une sauvegarde complète de la base de données dès que possible et de vérifier que la sauvegarde complète de la base de données est propre.

Propriété is_damaged

La backupset table de la base de données msdb contient une ligne pour chaque jeu de sauvegarde. La is_damaged propriété dans la backupset table indique si des dommages à la base de données ont été détectés lors de la création de la sauvegarde. Par conséquent, la sauvegarde peut être endommagée et ne peut pas être restaurée.