回答:
データベースは完全復旧モードですか?
はいの場合、トランザクションログのバックアップを行っていますか?
いいえ(完全復旧モードではない)場合、別の名前のデータベースとして最後の完全バックアップを復元します。(すでに取得しているデータベースを上書きしないでください。)そこから、バックアップ時にオンラインであったレコードを復元できますが、それ以降の変更はすべて失われます。
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/
@user1059637
-コードに機能を追加する人々に対するあなたの態度はどうですか?
残念ながら、多くの情報がなければあなたを助けることはできません。しかし、あなたの質問から、データベースから200万レコードと思われるものを削除したことがわかりました。ほとんどの場合、データベースに完全なログを記録し、非常に特殊なツールを購入しない限り、この情報を回復することはできません。
自分が何をしたと思うか、レコードを取り戻すことができないと思う理由、およびデータベースの構成を説明できる理由を詳細に説明できる場合は、もう少しお手伝いできます。
いくつかの一般的なアドバイス:200万件のレコードを削除したと思われる場合、おそらく今は少しおかしくなります。したがって、5分間の休憩を取り、落ち着いて問題を再検討する必要があります。また、合理的である場合(午前2時に起床せずに上司に伝えて)、解決策を検討している場合は、すぐに上司に伝える必要があります。必死に回復し、潜在的に事態を悪化させて詳細を隠そうとするよりも、起こったことを認める方がよい。上司が何らかの形で助けてくれることを知っていれば、問題を解決するのに役立ちます。私が言ったように、ほんのいくつかの一般的なアドバイス。