質問

皆さん、

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

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

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

ありがとう!マルク

役に立ちましたか?

解決

説明するように

あなたは、バックアップファイルにRESTORE HEADERONLYを試すことができます<のhref = "http://msdn.microsoft.com/en-us/library/aa238455(SQL.80).aspx" のrel = "nofollowをnoreferrer" >ここの

それはあなたが探している情報を与える必要があります。

他のヒント

バックアップが最初に実行された 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 行が含まれます
  • バックアップセット -- バックアップセットごとに 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

私は(ちょうどこの答えのためにプレーしていた)前にこれを使ったことがありません。いくつかの書き込みは、バックアップ自体の可能性が非常に高い部分ですが、あなたは、いくつかのチャンスをうかがって、それらを区別することができる必要があります。

は、私の知る限りは、マスター・データベースに知っているように、すべての書き込みが、詳細な情報が保存されているログ・テーブルが存在します。デフォルトでは、ログに記録するにならないように、あなたはそれを有効にする必要があります - しかし、あなたは、ログイン・メカニズムを有効にする必要がある場合、私はわかりませんよ。 Oracleでは、たとえば、それは周りのシステム・データベース・テーブルログを照会できることがある方法です。

それ以外の場合は、

は - 。あなたはまだ自分でトリガを作成し、必要なすべてのテーブル/列の上にそれを適用して行うことができ、自分自身をログイン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top