SQLServer备份和还原全攻略
⼀、知识点
完全备份:备份全部选中的⽂件夹,并不依赖⽂件的存档属性来确定备份那些⽂件。(在备份过程中,任何现有的标记都被清除,每个⽂件都被标记为已备份,换⾔之,清除存档属性)。完全备份也叫完整备份。
差异备份:差异备份是针对完全备份:备份上⼀次的完全备份后发⽣变化的所有⽂件。(差异备份过程中,只备份有标记的那些选中的⽂件和⽂件夹。它不清除标记,即:备份后不标记为已备份⽂件,换⾔之,不清除存档属性)。
增量备份:增量备份是针对于上⼀次备份(⽆论是哪种备份):备份上⼀次备份后,所有发⽣变化的⽂件。(增量备份过程中,只备份有标记的选中的⽂件和⽂件夹,它清除标记,即:备份后标记⽂件,换⾔之,清除存档属性。)
事务⽇志备份:在特定事务⽇志备份之前执⾏的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执⾏的所有事务⽇志备份或在特定事务⽇志备份之前执⾏的差异备份(如果您还原了差异备份)。如果你设置了恢复模式为【简单】,你将⽆法使⽤【事务⽇志】备份。SQL Server 2000 和 SQL Server 2005:创建事务⽇志备份,您必须使⽤完整恢复或⼤容量⽇志记录恢复模型。
部分备份:通过指定 READ_WRITE_FILEGROUPS 创建的备份称为“部分备份”。在简单恢复模式下,只允许对只读⽂件组执⾏⽂件组备份。还原的数据备份类型:数据库备份、部分备份或⽂件备份。对于数据库备份或部分备份,⽇志备份序列必须从数据库备份或部分备份的结尾处开始延续。对于⼀组⽂件备份,⽇志备份序列必须从整组⽂件备份的开头开始延续。
⽂件备份: “⽂件备份”包含⼀个或多个⽂件(或⽂件组)中的所有数据。
⽇志链:连续的⽇志备份序列称为“⽇志链”。⽇志链从数据库的完整备份开始。通常,仅当第⼀次备份数据库时,或者将恢复模式从简单恢复模式切换到完整恢复模式或⼤容量⽇志恢复模式之后,才会开始⼀个新的⽇志链。除⾮在创建完整数据库备份时选择覆盖现有备份集,否则现有的⽇志链将保持不变。在该⽇志链保持不变的情况下,便可从媒体集中的任何完整数据库备份还原数据库,然后再还原相应恢复点之前的所有后续⽇志备份。恢复点可以是上次⽇志备份的结尾,也可以是任何⽇志备份中的特定恢复点。
⼀个备份⽅案例⼦:某个站点在星期天晚上执⾏完整数据库备份。在⽩天每隔 4 ⼩时制作⼀个事务⽇志备份集,并⽤当天的备份重写头⼀天的备份。每晚则进⾏差异备份。如果数据库的某个数据磁盘在星期四上午 9:12 出现故障,则该站点可以:
1)备份当前事务⽇志;(已经出现故障了,如何备份当前事务⽇志?)
2)还原从星期天晚上开始的数据库备份;
3)还原从星期三晚上开始的差异备份,将数据库前滚到这⼀时刻;
4)还原从早上 4 点到 8 点的事务⽇志备份,以将数据库前滚到早上 8 点;
5)还原故障之后的⽇志备份。这将使数据库前滚到故障发⽣的那⼀刻。
⼆、还原步骤
创建⼀个叫TestBackup的数据库,创建⼀张叫Table1的表,这个时候进⾏⼀次完整备份,备份⽂件为:TestBackupDB-full.bak;接着创建表Table2后进⾏差异备份,备份⽂件为:TestBackupDB-diff.bak;接着创建表Table3后进⾏事务⽇志备份(如果数据库设置了恢复模式为【简单】,那么在备份类型选项中将看不到【事务⽇志】),备份⽂件为:TestBackupDB-log.bak;
创建⼀个叫TestBackup2的数据库,⽤于测试TestBackup数据库的备份⽂件的还原。
(图1:创建库结构)
(图2:备份类型)
下⾯我们就可以对三个备份⽂件:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak进⾏还原:步骤1:还原完整备份⽂件TestBackupDB-full.bak,选项如图4、图5所⽰,还原成功后数据列表就会如图6所⽰,这是因为恢复状态选项:不对数据库执⾏任何操作,不回滚未提交的事务。可以还原其他事务⽇志。(RESTORE WITH NORECOVERY)
(图3:进⼊SSMS还原)
(图4:还原常规)
(图5:还原选项)
(图6:完整备份还原)
步骤2:还原差异备份⽂件TestBackupDB-diff.bak,操作如步骤1所⽰,这个时候的数据库还是跟图6的状态⼀样的。
sqlserver备份表语句步骤3:还原事务⽇志备份⽂件TestBackupDB-log.bak,如图7进⼊事务⽇志的还原操作界⾯;看图8的选项中有指定事务的时间进⾏还原(还原过程中的恢复状态都是默认为RESTORE WITH RECOVERY,所以这⾥没有提及这个选项)。还原后的TestBackup2数据库,还原之后的数据库TestBackup2如图9所⽰。
(图7:进⼊事务⽇志)
(图8:事务⽇志)
(图9:还原后的数据库)
三、升级
通常来说⽂章写到这⾥就应该结束了,但是很幸运,再给你介绍⼀下如何在对表进⾏分区后的还原操作,从上⾯的操作来看只包括了mdf和ldf⽂件,但如果多了⼏个ndf⽂件,这些还原⼜⼀样吗?所以我称这部分的内容为升级。
情景⼀:如果本来就有对应的分区⽂件的,只要在还原的时候修改【还原为】的⽂件名就可以进⾏还原了。
情景⼆:如果刚刚新建了分区⽂件组和⽂件,这个时候接着还原备份就会出现图10的错误(不知道是
不是在SQL Server 2005的问题);要解决这个问题有两个⽅法,第⼀个:重启数据库服务再还原;第⼆个:设置数据库的【限制访问】设置为【Single】;
(图10:错误)
四、参考⽂献

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。