SQL Server registra un'operazione di backup nella tabella di cronologia dei set di backup quando si usa VSS per eseguire il backup dei file in un volume

Questo articolo descrive un comportamento "by design" che si verifica quando si usa VSS per eseguire il backup dei file in un volume.

Versione originale del prodotto: SQL Server
Numero KB originale: 951288

Sintomi

Quando si usa un'applicazione del servizio Copia Shadow del volume per eseguire il backup dei file in un volume che include SQL Server file di database, SQL Server registra un'operazione di backup nella tabella di backupset cronologia. Questo comportamento si verifica anche se non è stato effettivamente eseguito il backup dei file di database di SQL Server.

Causa

Questo comportamento si verifica perché l'applicazione VSS chiama il servizio SQLWriter nel sistema durante l'operazione di backup. Per altre informazioni sull'interazione delle applicazioni VSS con SQL Writer, vedere SQL Server Backup di applicazioni - Servizio Copia Shadow del volume e Writer SQL.

Precauzioni da adottare se si usano le voci nella tabella di cronologia dei set di backup per il ripristino dei dati

Se si desidera utilizzare voci nella tabella di cronologia per il backupset ripristino dei dati, è necessario verificare che le voci rappresentino le operazioni di backup del database effettive.

Verificare che una voce rappresenti un'operazione di backup del database nativo (anziché un backup snapshot vss)

A tale scopo, eseguire l'istruzione seguente:

USE msdb
GO

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

Nel risultato si notano la database_backup_lsn colonna e la is_snapshot colonna . Una voce che rappresenta un'operazione di backup del database nativo presenta le caratteristiche seguenti:

  • Il valore della database_backup_lsn colonna non è 0.
  • Il valore della is_snapshot colonna è 0.

Verificare che il set di backup non presenti errori

A tale scopo, eseguire l'istruzione seguente:

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

Se questa query restituisce risultati, significa che non si dispone di backup di database validi dopo la data segnalata. È consigliabile eseguire un backup completo del database il prima possibile e verificare che il backup completo del database sia pulito.

Proprietà is_damaged

La backupset tabella nel database msdb contiene una riga per ogni set di backup. La is_damaged proprietà nella backupset tabella indica se sono stati rilevati danni al database durante la creazione del backup. Pertanto, il backup potrebbe essere danneggiato e non ripristinabile.