zoukankan      html  css  js  c++  java
  • [轉]SQL的完整备份和还原

    FROM : http://blog.sina.com.cn/s/blog_59e866610100dld3.html

    对于数据库来说,备份和还原无疑是非常重要的。今天就在自己的机器上学习并操作了一下,总结一下。

    我用的是2005,今天先总结的是完整数据库备份和还原。

    1、首先先创建备份设备

    exec sp_addumpdevice 'disk', 'myback1', 'd:\backup\myback1.bak'

    go

    exec sp_addumpdevice 'disk', 'myback2', 'd:\backup\myback2.bak'

    go

    2、完整备份数据库test

    backup database test
    to myback1,myback2
    with init,name='test_fullbackup_20090521'

    在with选项里面中,有两个要注意的选项是init和format,使用这两个选项都会破坏备份设备中已经存在的备份,而且使用的时候两个不能同时使用。选项name指定备份的名称,建议使用,不然到时还原的时候就不知道哪个是哪个了。还可以用选项medianame指定备份媒体的名称,一般不需要。

    3、差异备份数据库test

    在对数据库做了更改后,可以对数据库进行差异备份。

    backup database test
    to myback1,myback2
    with differential,name='test_fulldiff_20090521'

    4、备份数据库test日志

    backup log test
    to myback1,myback2
    with name='test_logbackup_20090521'

    可以将日志和数据备份到同一个备份设备,但在实际运用中为了性能等因素,一般是将日志和数据备份到不同设备。

    在上一次备份日志之后,如果做了什么错误更改或变动,不得不还原数据,如果直接还原的话,将会报错,

    提示:尚未备份数据库 "test" 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLACE 或 WITH STOPAT 子句来只覆盖该日志的内容。

    所以在还原之前,请先做一个尾日志备份,尤其是在系统发生故障的时候,如果可能,应该马上进行尾日志备份,以帮助还原到故障点时的状态。

    backup log test
    to myback1,myback2
    with name='test_log_tailbackup_20090521'

    以上所做的备份均会在系统数据库msdb中的系统表backupset留下记录,可以用一下语句查看:

    use msdb
    go
    select backup_set_id,media_set_id,position,name,type
    from backupset

    SQL的完整备份和还原

    上图是我做测试时的结果,position显示文件的位置,还原时用得到,name就是备份的名称,type就是备份的类型,D表示数据库,I表示差异,L表示日志。

    4、还原数据库test

    还原的时候请注意,因为想将数据库的状态还原到备份尾日志之前的状态,所以还原的时候不要还原尾日志,不然会出错的,或者等于没有还原。

    use master
    go
    restore database test #还原完整的数据库备份,文件位置1,显示指定norecovery允许进一步还原数据。
    from myback1,myback2
    with file=1,norecovery
    go
    restore database test #还原差异备份
    from myback1,myback2
    with file=2,norecovery
    go
    restore log test #还原日志,在尾日志之前有多少日志备份,都要还原。
    from myback1,myback2
    with file=3,recovery #recovery将数据库恢复到联机状态。
    go

    完整数据库备份+差异备份+日志备份是现实应用常用的,其备份策略一般如下:

    (1)每周六晚上对数据库进行一次完整备份。

    (2)每周三晚上对数据库进行差异备份。

    (3)每隔30分钟进行一次事务日志备份。

    可以使用“数据库维护计划向导”设计为自动执行这一备份策略。备份时应该保证备份有几份拷贝,并放于不同的位置,另外还应该测试一下备份的可用性,保证在还原的时候不出错。

  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/Athrun/p/2131757.html
Copyright © 2011-2022 走看看