vss を使用してボリューム上のファイルをバックアップする場合、バックアップ操作をバックアップセット履歴テーブルに記録SQL Server
この記事では、VSS を使用してボリューム上のファイルをバックアップするときに発生する "仕様別" の動作について説明します。
元の製品バージョン: SQL Server
元の KB 番号: 951288
現象
ボリューム シャドウ コピー サービス (VSS) アプリケーションを使用して、SQL Server データベース ファイルを含むボリューム上のファイルをバックアップする場合、SQL Serverは履歴テーブルにバックアップ操作をbackupset
記録します。 この動作は、SQL Serverのデータベース ファイルを実際にバックアップしなかった場合でも発生します。
原因
この動作は、VSS アプリケーションがバックアップ操作中にシステム上で SQLWriter サービスを呼び出しているために発生します。 VSS アプリケーションと SQL ライターの対話方法の詳細については、「アプリケーションのバックアップ - ボリューム シャドウ コピー サービス (VSS) と SQL ライター」SQL Server参照してください。
データ復旧のためにバックアップセット履歴テーブルのエントリを使用する場合の注意事項
履歴テーブルのエントリを backupset
データ復旧に使用する場合は、エントリが実際のデータベース バックアップ操作を表していることを確認する必要があります。
エントリが (VSS スナップショット バックアップではなく) ネイティブ データベース バックアップ操作を表していることを確認します
これを行うには、次のステートメントを実行します。
USE msdb
GO
SELECT server_name, database_name, backup_start_date, is_snapshot, database_backup_lsn
FROM backupset
結果として、列と列にdatabase_backup_lsn
is_snapshot
注目してください。 ネイティブ データベース バックアップ操作を表すエントリには、次の特性があります。
- 列の
database_backup_lsn
値は 0 ではありません。 - 列の
is_snapshot
値は 0 です。
バックアップ セットにエラーがないことを確認する
これを行うには、次のステートメントを実行します。
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
このクエリが結果を返す場合は、報告された日付以降に適切なデータベース バックアップがないことを意味します。 データベースの完全バックアップをできるだけ早く実行し、データベースの完全バックアップがクリーンされていることを確認することを強くお勧めします。
is_damaged プロパティ
backupset
msdb データベース内のテーブルには、バックアップ セットごとに行が含まれています。 テーブルの プロパティは is_damaged
、 backupset
バックアップの作成時にデータベースの損傷が検出されたかどうかを示します。 そのため、バックアップが破損し、復元できない可能性があります。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示