2

皆さん、

SQL Server データベース (2005 または 2008) の切断されたバックアップを受け取り、それを SQL Server インスタンスに復元するとします。

その特定のデータベースで最後の書き込み操作がいつ行われたかを確認する方法はありますか? システム カタログか何かがありますか? 特定のデータベースのバックアップがいつのものかを知りたいのですが、残念ながら、それはどこにも明示的に記録されているわけではありません。何十ものデータ テーブルをすべてチェックして、最高の日付/タイム スタンプを確認することも実際にはオプションではありません。 ....

何か案は?確かに - *.bak ファイルの日付/時刻スタンプを確認できますが、SQL Server (Management Studio) 内からより正確に確認できますか??

ありがとう!マルク

4

4 に答える 4

2

バックアップが最初に実行された SQL Server インスタンスにアクセスできる場合は、次のクエリを実行できるはずですmsdb

SELECT backup_set_id, backup_start_date, backup_finish_date
FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

バックアップ セットに関連する表がいくつかあります。

  • backupfile -- バックアップされたデータ ファイルまたはログ ファイルごとに 1 つの行が含まれます
  • backupmediafamily -- メディア ファミリごとに 1 つの行が含まれます
  • backupmediaset -- バックアップ メディア セットごとに 1 つの行が含まれます
  • backupset -- バックアップ セットごとに 1 つの行が含まれます

これらのテーブルを照会することにより、最後のバックアップがいつ行われたか、どのタイプのバックアップが行われたか、ファイルがどこに書き込まれたかを判断できます。

于 2009-01-28T10:38:15.963 に答える
1

少し遅いですが、あなたが望むものでなければなりません。

データベースへの各書き込みは、ログ ファイルのエントリです。LSNを持っています。これは、少なくともログの復元のためにバックアップに保存する必要があります。

では、LSN を日時に一致させる方法は?

SELECT TOP 5 [End Time] AS BringFirst, *
FROM ::fn_dblog (NULL, NULL)
WHERE [End Time] IS NOT NULL
ORDER BY BringFirst DESC

これを使用したことはありません(この回答で遊んだだけです)。一部の書き込みは、バックアップ自体の一部である可能性が非常に高いですが、ちょっと調べてみるとそれらを区別できるはずです。

于 2009-08-01T11:34:08.987 に答える
1

ここでRESTORE HEADERONLY説明されているように、バックアップファイルを試すことができます

探している情報が得られるはずです。

于 2009-05-20T17:04:31.983 に答える
0

私の知る限り、マスターデータベースには、すべての書き込みが詳細情報とともに保存されるログテーブルが存在します。しかし、ログメカニズムを有効にする必要があるかどうかはわかりません。そのため、デフォルトではログが記録されず、有効にする必要があります。たとえば、Oracle では、クエリ可能なシステム データベース テーブル ログが存在します。

そうでない場合でも、自分でトリガーを作成し、それを必要なすべてのテーブル/列に適用して、自分でログを記録することができます。

于 2009-01-28T10:26:21.370 に答える