web-dev-qa-db-ja.com

バックアップなしでデータベースを特定の時点に復元できますか?

ログがFULLに設定されたSQL 2005データベースがありますが、バックアップはありません。特定の時点に復元することは可能ですか?

5
Emil

バックアップされたことのない単純な復旧モデルを使用したデータベースがありました。

私は必要のないものをいくつか削除してこのスレッドに行きました。それを読んだ後、私の心は1番にクライアントに伝え、2番にデータを置き換えるために行うすべての作業を思いついたのです。

私は引き続きgoogleを調べてみましたが、ApexSQLは回復しました。 リンク

データベースをデタッチし、デタッチしたデータとログファイルのコピーを取り、元のファイルを再アタッチして、プログラムを実行しました。私はデータベースにそれを伝え、切り離されたログファイルのコピーをポイントしました。それはすべての削除を見つけ、回復をスクリプト化しました。

全体として、私はこの製品に非常に満足しており、誰にでもそれをお勧めします。 14日間のトライアルがありますが、10行に1回しか回復しません。

12
Carl

バックアップなし=復元なし。以前に作成したバックアップから復元します。

使用している復旧モデルに違いはありません。

一部の神話はPaul Randallから逮捕されました: BackupRestore

11
gbn

一般に、ある時点に復元するには、データベースの古いバックアップを取り、その時点までのトランザクションログを復元します。

理論的には、データベースには、データベースを最初から任意の時点まで取得するために必要なすべてのデータが含まれているはずですが、それを行う方法はありません。

データベースバックアップがないと、トランザクションログバックアップを作成できません。

私の唯一の考えは、SQLを「だまして」、データベースが空のときにデータベースのバックアップがあると考えて、それにトランザクションログを適用できるということです。どうすればいいのか分かりません。

申し訳ありませんが、これはあなたの質問への回答ではありません。役立つ可能性がある場合に備えて、私のアイデアを書き留めておきます。私の洞察は、あなたが尋ねることは単純であるということですが、最初の調査ではそれは不可能に見えます!

2
Robin Day

トランザクションログにはnew情報が保存され、古いデータは保持されません。

たとえば、レコードのFirstNameフィールドを "Joe"から "Bill"に変更した場合、トランザクションログでは、レコードXのFirstNameを "Bill"に変更したレコードのみが記録され、以前に "Joe"だったレコードは記録されません。

したがって、それらを使用して、以前のバックアップから時間内に前方に移動できますが、時間を遡って移動することはできません。

実行できる唯一のことは、理論的にはどのレコードが挿入または更新されたかを判別することですが、それらのトランザクションが発生する前のレコードを判別することはできません。

2
richardtallent

SQLの復元以外に何も使用せずに復元し、復元するデータと時間を選択しました。 (私が持ってはならないいくつかのレコードを削除しました)復元は同じ日に行われましたが、復元した時点と同じです。

さて、もう一度やり直そうとしていますが、悲しいかな、復元された最後のバックアップにしか行きません。私が異なって何をしたかわかりません:(

1
Splat