簡単に理解できない状況があり、このフォーラムで他の人に提案があるかどうか尋ねたいと思いました。
Windows Server 2008R2 EnterpriseでSQL Server 2008 R2 Standard SP3を実行しています。
データベースにはいくつかのメンテナンスが必要でしたが、その後、別のサーバーに復元する必要がありました。COPY_ONLYで実行される完全なdbバックアップと、4つのtlogバックアップのセットがあります。
- 開始する前に、tlogbackup1を作成します
- 以下からの変更
FULL
へのBULK_LOGGED
復旧モデル - 新しいファイルグループを追加する
- newfilegroupにファイルを追加する
- newfilegroupをデフォルトに設定
- テーブルに選択(newfilegroup)
- 元のテーブルをドロップ
- 元のファイルを削除
- 元のファイルグループを削除する
- 新しいテーブルの名前を元のテーブルと一致するように変更する
- 元のファイルグループと一致するようにnewfilegroupのファイル名を変更する
- 元のファイル名と一致するようにカタログのファイル名を変更する
- OSレベルでファイル名を変更して元のファイル名と一致させる
- 既定のファイルグループを元のファイルグループに設定する
- dbをオンラインにする
- 以下からの変更
BULK_LOGGED
へのFULL
復旧モデル - すべての手順が完了したら、tlogbackup2を作成します
復元サーバーでのドライブ文字の変更により、すべてのバックアップの復元にはWITH MOVEを使用する必要があります。
回復手順:
RESTORE database SomeDB FROM DISK = 'D:\REPRO\SomeDB.bak'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup1.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
RESTORE LOG SomeDB FROM DISK = 'D:\REPRO\tlogbackup2.trn'
WITH
MOVE 'SystemData' TO 'D:\SQLDATA\SomeDB.mdf'
,MOVE 'SystemDataPDS' TO 'D:\SqlData\SomeDB.ndf'
,MOVE 'SystemData_log' TO 'D:\SQLLogs\SomeDB.LDF'
,NORECOVERY
,stats = 1
最終的なtlogの復元は100%になり、エラー3456で失敗します。
ファイル1のデータベース「SomeDB」、ファイル「SystemData」の368ページを処理しました
ファイル1のデータベース「SomeDB」、ファイル「SystemDataPDS」の7656520ページを処理しました
ファイル1のデータベース「SomeDB」、ファイル「SystemData_log」の172430ページを処理しました
メッセージ3456、レベル16、状態1、行1
ログレコード(210388:123648:232)をやり直すことができませんでした(4:8088)、ページ(4:8088)、トランザクションID(0:1016710921)、データベース 'SomeDB'(データベースID 6) 。ページ:LSN =(0:0:1)、タイプ=11。ログ:OpCode = 4、コンテキスト11、PrevPageLSN:(210388:122007:1)。データベースのバックアップから復元するか、データベースを修復します。メッセージ3013、レベル16、状態1、行1 RESTORE LOGが異常終了しています。
完全なdbバックアップが問題ないことを確認するためだけに、それを復元しCHECKDB
、エラーは発生しませんでした。
すべてのフィードバックを歓迎します。
前もって感謝します、
ネッドカワウソ