加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

备份的两种形式:完全备份和差异备份

(2012-06-11 14:54:50)
标签:

it

分类: 【OK】数据库专题

  完全备份:是对数据库进行完整备份,周期比较长,如1周等

  差异备份:是对更新备份的数据进行备份,周期比较短,如1小时差量备份会备份自从上次完全备份后被修改过的文件。它不将文件标记为已经备份(换句话说,没有清除存档属性)。从差量备份中恢复也是很快的,因为只需要两份磁带——最后一次完全备份和最后一次差量备份。


1)完全备份
-------------------------------------------
(1)是备份的基准。在做备份时第一次备份都建议使用完全备份。
(2)完全备份会备份数据库的所有数据文件、数据对象和数据。
(3)会备份事务日志中任何未提交的事务。因为已提交的事务已经写入数据文件中。
--------------------------------------------
backup database d1 to bak1 with init --完全备份
backup database d1 to bak1 with noinit
----------------------------------------------------------------------
2)差异备份
---------------------------------------------
(1)基于完全备份。
(2)备份自最近一次完全备份以来的所有数据库改变。
(3)恢复时,只应用最近一次完全备份和最新的差异备份。
-----------------------------------------------
backup database d2 to bak2 with init,name='d2_full' --差异备份,第一次备份时应做完全备份
create table b1(c1 int not null,c2 char(10) not null)
backup database d2 to bak2 with differential,name='d2_diff1'
insert b1 values(1,'a')
backup database d2 to bak2 with differential,name='d2_diff2'
insert b1 values(2,'b')
backup database d2 to bak2 with differential,name='d2_diff3'
insert b1 values(3,'c')
backup database d2 to bak2 with differential,name='d2_diff4'
restore headeronly from bak2

差异数据库备份的还原

差异数据库备份指记录自上次数据库备份后发生更改的数据,那么上次备份是指什么样的备份呢,指完整备份,不是指差异备份,所以还原差异数据库备份时,只需要先还原完整备份,然后选择一个差异数据库备份即可完成还原操作。

企业管理器,如图,选择一个完整数据库备份,再选择一个差异数据库备份,单击“确定”按钮即可。

http://www.cftea.com/upload/20051221090118898434.jpg

从文件组或文件还原也比较简单。比较复杂的是从设备,要分两步还原。

第一步、还原完整数据库备份,请注意图中红色部分。如果完整数据库备份是单独的一个文件就不必在乎备份号。还原之后数据库显示“正在装载”,不予理会,进行第二步。

http://www.cftea.com/upload/20051221090122441036.jpg

http://www.cftea.com/upload/20051221090126092159.jpg

第二步、还原差异数据库备份,请注意图中红色部分。如果差异数据库备份是单独的一个文件就不必在乎备份号。最后点击确定就完成了数据库还原。

http://www.cftea.com/upload/20051221090134655392.jpg

使用T-SQL就比较简单了,如下,具体语法请参见SQL Server联机丛书,注意的是第一个还原要使用norecovery参数。


restore database f1 from disk='E:\foo' with file=1, move 'foo_data' to 'D:\foo.mdf', move 'foo_log' to 'D:\foo.ldf', norecovery
restore database f1 from disk='E:\foo' with file=4, recovery


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有