リモートのSQL Server 2008テーブルから約2,000,000のレコードを誤って削除しました。サーバーがサーバー側のバックアップファイルへのアクセスを許可していません。
これらの記録を取り戻す方法はありますか?
データベースは完全復旧モードですか?
はいの場合、トランザクションログのバックアップを行っていますか?
いいえ(完全復旧モードでない場合)、最後の完全バックアップを別の名前のデータベースとして復元します。 (すでに取得しているデータベースを上書きしないでください。)そこから、バックアップ時にオンラインであったすべてのレコードを復元できますが、それ以降の変更はすべて失われます。
SQL Serverは、削除された各レコードのログを保持します。これらのログは、fn_dblog
SQL Server関数を介してクエリできます。
SELECT [RowLog Contents 0]
FROM sys.fn_dblog(NULL, NULL)
WHERE
AllocUnitName = 'dbo.TableName'
AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )
AND Operation in ( 'LOP_DELETE_ROWS' )
;
ただし、このログは16進形式なので、この16進形式を実際のデータに変換する必要があります。
以下の記事は、上記で定義した方法で削除されたレコードを回復するのに役立ちます。
http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/
残念ながら、これ以上の情報がなければ、私たちはあなたを助けることはできません。しかし、あなたの質問から、データベースから200万件のレコードのように見えるものを削除したようです。ほとんどの場合、データベースに完全にログオンしていて、非常に具体的なツールを購入しない限り、この情報を回復することはできません。
自分がやったと思うこと、レコードを取り戻すことができないと思う理由、およびデータベースの編成を詳しく説明できる場合は、もう少しお手伝いできます。
いくつかの一般的なアドバイス:200万件のレコードを削除したと思われる場合は、おそらく今は少しおかしくなっています。したがって、5分間の休憩を取り、落ち着いて問題を再検討する必要があります。また、それが合理的であり(午前2時に起こして告知しないでください)、解決策に取り組んでいる場合は、すぐに上司に伝える必要があります。必死に回復を試み、問題を悪化させ、詳細を隠すよりも、何が起こったのかを認めた方が良いでしょう。上司が何らかの形で役立つことを知っていると、問題の修正に役立ちます。私が言ったように、いくつかの一般的なアドバイスです。