トランザクションログファイルが(SQL Serverがシャットダウンされている間に)削除された非常に大きなデータベース(〜6TB)があります。
- データベースの切り離しと再接続。そして
- トランザクションログファイルの削除の取り消し
...しかし、これまでのところ何も機能していません。
現在実行中です:
ALTER DATABASE <dbname> REBUILD
LOG ON (NAME=<dbname>,FILENAME='<logfilepath>')
...しかし、データベースのサイズを考えると、これを完了するにはおそらく数日かかります。
ご質問
上記のコマンドと次のコマンドに違いはありますか?
DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS)
REPAIR_ALLOW_DATA_LOSS
代わりに実行する必要がありますか?
データベースを再構築できるようにデータが他のソースから派生していることは注目に値しますが、すべてのデータを再挿入するよりもデータベースを修復する方がはるかに迅速になると思われます。
更新
スコアを保持している場合:ALTER DATABASE/REBUILD LOG
コマンドは約36時間後に完了し、報告しました:
警告:データベース 'dbname'のログが再構築されました。トランザクションの一貫性が失われました。RESTOREチェーンが破損し、サーバーは以前のログファイルのコンテキストを失ったため、それらが何であるかを知る必要があります。
DBCC CHECKDBを実行して、物理的な一貫性を検証する必要があります。データベースはdbo専用モードになっています。データベースを使用可能にする準備ができたら、データベースオプションをリセットし、余分なログファイルを削除する必要があります。
その後、DBCC CHECKDB
成功しました(約13時間かかりました)。データベースバックアップの重要性(そしてプロジェクトマネージャーにサーバーへのアクセスを許可すること...)をすべて知ったとしましょう。