【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个文件
2014-03-04 13:19
681 查看
如果数据库比较大,而只是某个文件损坏了,那么并不需要恢复整个数据库,而只需要通过完整备份,来修复损坏的文件就可以了,另外,应用后续的日志就可以完全恢复这个文件的数据。
1、创建一个包含主文件组、读写文件组的测试数据库
2、创建表,插入数据
3、完整备份
4、再次插入数据
5、日志备份
6、关闭服务,删除文件 c:\db_test_RW.ndf,重启服务后,发现数据库不能打开.
7、尝试恢复数据库,但会报错,提示需要先备份尾日志:
8、通过no_truncate选项来备份尾日志:
9、通过完整备份,还原损坏的文件db_test_RW,从返回的信息来看,确实只是从恢复了指定的文件,而不是整个数据库:
10、还原日志:
11、还原尾日志:
12、验证是否恢复:
1、创建一个包含主文件组、读写文件组的测试数据库
CREATE DATABASE db_test ON ( NAME = db_test_DATA, FILENAME = 'c:\db_test.mdf' ), FILEGROUP FG_READ_WRITE ( NAME = db_test_RW, FILENAME = 'c:\db_test_RW.ndf' ) LOG ON ( NAME = db_test_LOG, FILENAME = 'c:\db_test.ldf' ) GO
2、创建表,插入数据
use db_test go create table xxx(v int) on FG_READ_WRITE insert into xxx select OBJECT_ID from sys.objects
3、完整备份
backup database db_test to disk ='c:\db_test.bak' with format
4、再次插入数据
insert into xxx select 0 --返回55条数据 select * from xxx
5、日志备份
backup log db_test to disk = 'c:\db_test.trn'
6、关闭服务,删除文件 c:\db_test_RW.ndf,重启服务后,发现数据库不能打开.
7、尝试恢复数据库,但会报错,提示需要先备份尾日志:
use master go RESTORE DATABASE db_test FILE = N'db_test_RW' FROM DISK = 'c:\db_test.bak' with norecovery /* 消息 3159,级别 16,状态 1,第 1 行 尚未备份数据库 "db_test" 的日志尾部。如果该日志包含您不希望丢失的工作, 请使用 BACKUP LOG WITH NORECOVERY 备份该日志。 请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。 消息 3013,级别 16,状态 1,第 1 行 RESTORE DATABASE 正在异常终止。 */
8、通过no_truncate选项来备份尾日志:
backup log db_test to disk = 'c:\db_test_trail.trn' with no_truncate /* 已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 2 页。 BACKUP LOG 成功处理了 2 页,花费 0.112 秒(0.074 MB/秒)。 */
9、通过完整备份,还原损坏的文件db_test_RW,从返回的信息来看,确实只是从恢复了指定的文件,而不是整个数据库:
RESTORE DATABASE db_test FILE = N'db_test_RW' FROM DISK = 'c:\db_test.bak' with norecovery /* 已为数据库 'db_test',文件 'db_test_RW' (位于文件 1 上)处理了 16 页。 已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 6 页。 RESTORE DATABASE ... FILE=<name> 成功处理了 22 页,花费 0.168 秒(1.014 MB/秒)。 */
10、还原日志:
restore log db_test from disk = 'c:\db_test.trn' with norecovery /* 已为数据库 'db_test',文件 'db_test_RW' (位于文件 1 上)处理了 0 页。 已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 7 页。 RESTORE LOG 成功处理了 7 页,花费 0.092 秒(0.567 MB/秒)。 */
11、还原尾日志:
restore log db_test from disk = 'c:\db_test_trail.trn' with recovery /* 已为数据库 'db_test',文件 'db_test_DATA' (位于文件 1 上)处理了 0 页。 已为数据库 'db_test',文件 'db_test_RW' (位于文件 1 上)处理了 0 页。 已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 2 页。 RESTORE LOG 成功处理了 2 页,花费 0.092 秒(0.090 MB/秒)。 */
12、验证是否恢复:
--返回55条数据,数据全部恢复 select * from xxx
相关文章推荐
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个文件
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- sql server 如何通过mdf文件和ldf文件恢复数据库
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- 通过备份数据库恢复SharePoint文档库中被删除的文件
- 如何通过trn日志文件恢复SQL Server 事务日志 还原 备份
- 云计算之路-试用Azure:数据库备份压缩文件在虚拟机上的恢复速度测试
- Sql server 2008数据库误删的恢复(利用日志和一个完整备份)
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- 怎么用引用啊?[转]SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- Sql server恢复数据库时出错,错误:3212,提示说“备份文件有两个媒体簇,但是只提供了1个 【解决办法】
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- SQL Server 灾难恢复31天之第3天:在还原数据库时确定需要哪些备份文件
- 如何恢复SQL Server 2000损坏的数据库文件
- SQL SERVER 2005 备份文件恢复数据库失败解决办法
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库