SQL Server registra una operación de copia de seguridad en la tabla de historial del conjunto de copias de seguridad cuando se usa VSS para realizar copias de seguridad de archivos en un volumen.

En este artículo se describe un comportamiento "por diseño" que se produce cuando se usa VSS para realizar copias de seguridad de archivos en un volumen.

Versión del producto original: SQL Server
Número de KB original: 951288

Síntomas

Cuando se usa una aplicación del Servicio de instantáneas de volumen (VSS) para realizar copias de seguridad de archivos en un volumen que incluye SQL Server archivos de base de datos, SQL Server registra una operación de copia de seguridad en la tabla de backupset historial. Este comportamiento se produce incluso si realmente no realizó una copia de seguridad de los archivos de base de datos de SQL Server.

Causa

Este comportamiento se produce porque la aplicación VSS llama al servicio SQLWriter en el sistema durante la operación de copia de seguridad. Para obtener más información sobre cómo interactúan las aplicaciones VSS con SQL Writer, revise SQL Server Aplicaciones de copia de seguridad: Servicio de instantáneas de volumen (VSS) y Escritor de SQL.

Precauciones que se deben tomar si usa las entradas de la tabla de historial del conjunto de copias de seguridad para la recuperación de datos.

Si desea usar entradas en la tabla de historial para la backupset recuperación de datos, debe comprobar que las entradas representan operaciones reales de copia de seguridad de la base de datos.

Compruebe que una entrada representa una operación de copia de seguridad de base de datos nativa (en lugar de una copia de seguridad de instantáneas de VSS)

Para ello, ejecute la siguiente instrucción:

USE msdb
GO

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

En el resultado, observe la database_backup_lsn columna y la is_snapshot columna. Una entrada que representa una operación de copia de seguridad de base de datos nativa tiene las siguientes características:

  • El valor de la database_backup_lsn columna no es 0.
  • El valor de la is_snapshot columna es 0.

Comprobación de que el conjunto de copia de seguridad no tiene errores

Para ello, ejecute la siguiente instrucción:

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 esta consulta devuelve resultados, significa que no tiene copias de seguridad de base de datos correctas después de la fecha notificada. Se recomienda encarecidamente realizar una copia de seguridad completa de la base de datos lo antes posible y comprobar que la copia de seguridad completa de la base de datos está limpia.

La propiedad is_damaged

La backupset tabla de la base de datos msdb contiene una fila para cada conjunto de copia de seguridad. La is_damaged propiedad de la backupset tabla indica si se detectaron daños en la base de datos cuando se creó la copia de seguridad. Por lo tanto, la copia de seguridad puede estar dañada y no se puede restaurar.