SQL Server, bir birimde dosyaları yedeklemek için VSS kullandığınızda yedekleme kümesi geçmişi tablosuna yedekleme işlemini kaydeder

Bu makalede, bir birimde dosyaları yedeklemek için VSS kullandığınızda oluşan "tasarıma göre" bir davranış açıklanmaktadır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 951288

Belirtiler

SQL Server veritabanı dosyalarını içeren bir birimde dosyaları yedeklemek için Birim Gölge Kopyası Hizmeti (VSS) uygulamasını kullandığınızda, SQL Server geçmiş tablosunda bir yedekleme işlemi backupset kaydeder. Bu davranış, SQL Server veritabanı dosyalarını yedeklememiş olsanız bile oluşur.

Neden

VsS uygulaması yedekleme işlemi sırasında sistemdeki SQLWriter hizmetini çağırdığı için bu davranış oluşur. VSS uygulamalarının SQL Yazıcı ile etkileşim kurması hakkında daha fazla bilgi için Uygulamaları Yedekleme - Birim Gölge Kopyası Hizmeti (VSS) ve SQL Yazıcı SQL Server gözden geçirin.

Veri kurtarma için yedekleme kümesi geçmişi tablosundaki girdileri kullanırsanız alınacak önlemler

Veri kurtarma için geçmiş tablosundaki backupset girişleri kullanmak istiyorsanız, girişlerin gerçek veritabanı yedekleme işlemlerini temsil ettiğini doğrulamanız gerekir.

Girişin yerel veritabanı yedekleme işlemini temsil ettiğini doğrulayın (VSS anlık görüntü yedeklemesi yerine)

Bunu yapmak için aşağıdaki deyimi çalıştırın:

USE msdb
GO

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

Sonuçta sütuna database_backup_lsn ve sütuna dikkat edin is_snapshot . Yerel veritabanı yedekleme işlemini temsil eden bir girdi aşağıdaki özelliklere sahiptir:

  • Sütunun database_backup_lsn değeri 0 değil.
  • Sütunun is_snapshot değeri 0'dır.

Yedekleme kümesinde hata olmadığını doğrulayın

Bunu yapmak için aşağıdaki deyimi çalıştırı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

Bu sorgu herhangi bir sonuç döndürürse, bildirilen tarihten sonra iyi veritabanı yedekleriniz olmadığı anlamına gelir. En kısa sürede tam veritabanı yedeklemesi gerçekleştirmenizi ve tam veritabanı yedeklemesinin temiz olduğunu doğrulamanızı kesinlikle öneririz.

is_damaged özelliği

backupset msdb veritabanındaki tablo, her yedekleme kümesi için bir satır içerir. is_damaged Tablodaki backupset özellik, yedekleme oluşturulduğunda veritabanına zarar verip vermediğini gösterir. Bu nedenle, yedekleme zarar görmüş olabilir ve geri yüklenemez.