我的情况不容易弄清楚,以为我会在这个论坛上问其他人是否有建议。
我正在Windows Server 2008R2 Enterprise上运行SQL Server 2008 R2 Standard SP3。
数据库需要一些维护,事实上,我需要在另一台服务器上进行还原。我使用COPY_ONLY进行了完整的数据库备份,再加上一组4个日志备份。
- 在开始之前,创建tlogbackup1
- 从转换
FULL
为BULK_LOGGED
恢复模式 - 添加新文件组
- 将文件添加到newfilegroup
- 将newfilegroup设置为默认
- 选择进入表(在newfilegroup上)
- 放下原始表
- 删除原始文件
- 删除原始文件组
- 更改新表的名称以匹配原始表
- 更改newfilegroup的文件名以匹配原始文件组
- 更改目录中的文件名以匹配原始文件名
- 在操作系统级别更改文件名以匹配原始文件名
- 将默认文件组设置为原始文件组
- 使数据库联机
- 从转换
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
最终的日志恢复达到100%,然后失败,并显示错误3456:
已处理368页的数据库'SomeDB',文件'SystemData'的文件1。
已处理数据库'SomeDB'的7656520页,文件1上的文件'SystemDataPDS'。
已处理数据库``SomeDB''的172430页,文件1上的文件``SystemData_log''
消息3456,级别16,状态1,行1
无法重做日志记录(210388:123648:232),页面(4:8088)上的数据库'SomeDB'(数据库ID 6)的事务ID(0:1016710921) 。页面:LSN =(0:0:1),类型=11。日志:操作码= 4,上下文11,PrevPageLSN:(210388:122007:1)。从数据库备份还原,或修复数据库。消息3013,级别16,状态1,第1行RESTORE LOG正在异常终止。
只是为了验证完整的数据库备份正常,我将其还原为ran CHECKDB
,并且没有错误。
欢迎所有反馈。
提前致谢,
内德·奥特