SQL Server registra uma operação de backup na tabela de histórico do conjunto de backups quando você usa o VSS para fazer backup de arquivos em um volume

Este artigo descreve um comportamento "por design" que ocorre quando você usa o VSS para fazer backup de arquivos em um volume.

Versão original do produto: SQL Server
Número de KB original: 951288

Sintomas

Quando você usa um aplicativo VSS (Serviço de Cópia de Sombra de Volume) para fazer backup de arquivos em um volume que inclui arquivos de banco de dados SQL Server, SQL Server registra uma operação de backup na tabela de backupset histórico. Esse comportamento ocorre mesmo que você não tenha feito backup dos arquivos de banco de dados do SQL Server.

Motivo

Esse comportamento ocorre porque o aplicativo VSS chama o serviço SQLWriter no sistema durante a operação de backup. Para obter mais informações sobre como os aplicativos VSS interagem com o SQL Writer, examine SQL Server Aplicativos de backup – VSS (Serviço de Cópia de Sombra de Volume) e SQL Writer.

Precauções a serem tomadas se você usar as entradas na tabela de histórico do conjunto de backups para recuperação de dados

Se você quiser usar entradas na backupset tabela de histórico para recuperação de dados, verifique se as entradas representam operações reais de backup de banco de dados.

Verifique se uma entrada representa uma operação de backup de banco de dados nativo (em oposição a um backup de instantâneo VSS)

Para fazer isso, execute a seguinte instrução:

USE msdb
GO

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

No resultado, observe a database_backup_lsn coluna e a is_snapshot coluna. Uma entrada que representa uma operação de backup de banco de dados nativo tem as seguintes características:

  • O valor da database_backup_lsn coluna não é 0.
  • O valor da is_snapshot coluna é 0.

Verifique se o conjunto de backup não tem erros

Para fazer isso, execute a seguinte instrução:

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 essa consulta retornar algum resultado, significa que você não terá bons backups de banco de dados após a data relatada. Recomendamos que você execute um backup completo do banco de dados o mais rápido possível e verifique se o backup completo do banco de dados está limpo.

A propriedade is_damaged

A backupset tabela no banco de dados msdb contém uma linha para cada conjunto de backup. A is_damaged propriedade na backupset tabela indica se o dano ao banco de dados foi detectado quando o backup foi criado. Portanto, o backup pode ser danificado e não restaurável.