数据库备份与还原

原创 2008年09月29日 21:12:00
数据库备份与还原的SQL语句:
备份:
  1. backup database [liDataBase] to disk = 'c:/liDataBase.bak'
还原:
  1. backup log [liDataBase] to disk = 'c:/liDataBase.log.bak' WITH NORECOVERY
  2. restore database [liDataBase] from disk = 'c:/liDataBase.bak'
注:在还原数据库时,一定要进行尾日志备份,否则将无法进行还原
附尾日志备份相关说明
尾日志备份

更新日期: 2006 年 7 月 17 日

显示蓝色数据库磁盘的图标 本主题仅适用于使用完整恢复模式或大容量日志恢复模式的数据库。

对于大多数情况,在完整恢复模式或大容量日志恢复模式下,SQL Server 2005 要求您备份日志尾部以捕获尚未备份的日志记录。还原操作之前对日志尾部执行的日志备份称为“尾日志备份”

SQL Server 2005 通常要求您在开始还原数据库前执行尾日志备份。尾日志备份可以防止工作丢失并确保日志链的完整性。将数据库恢复到故障点时,尾日志备份是恢复计划中的最后一个相关备份。如果无法备份日志尾部,则只能将数据库恢复为故障前创建的最后一个备份。

并非所有还原方案都要求执行尾日志备份。如果先前的日志备份中包含恢复点,或者您准备移动或替换(覆盖)数据库,则不一定需要尾日志备份。并且,如果日志文件受损且无法创建尾日志备份,则必须在不使用尾日志备份的情况下还原数据库。最新日志备份后提交的任何事务都将丢失。有关详细信息,请参阅本主题下文中的“不使用尾日志备份执行还原操作”。

尾日志备份与任何其他日志备份类似,使用 BACKUP LOG 语句执行。建议您在下列情况下执行尾日志备份:

  • 如果数据库处于在线状态,每当您准备对数据库执行的下一个操作为还原操作时,请在开始还原顺序之前使用 WITH NORECOVERY 备份日志尾部: 
    BACKUP LOG database_name TO <backup_device> WITH NORECOVERY
    注意:
    为防止出错,必须使用 NORECOVERY 选项。

  • 如果数据库处于离线状态并且无法启动。
    尝试执行尾日志备份。由于此时不会发生任何事务,所以 WITH NORECOVERY 是可选的。如果数据库受损,请使用 WITH CONTINUE_AFTER_ERROR 或 WITH NO_TRUNCATE。 
    BACKUP LOG database_name TO <backup_device> [WITH { CONTINUE_AFTER_ERROR | NO_TRUNCATE }
    重要提示:
    除非数据库受损,否则不建议使用 NO_TRUNCATE。

    如果数据库受损(例如,数据库无法启动),则仅当日志文件未受损、数据库处于支持尾日志备份的状态并且不包含任何大容量日志更改时,尾日志备份才能成功。

下表对这些选项进行了汇总。

BACKUP LOG 选项注释

NORECOVERY

每当您准备对数据库继续执行还原操作时,请使用 NORECOVERY。NORECOVERY 使数据库进入还原状态。这确保了数据库在尾日志备份后不会更改。

除非同时指定 NO_TRUNCATE 或 COPY_ONLY 选项,否则将截断日志。

{ CONTINUE_AFTER_ERROR | NO_TRUNCATE }

仅当您要备份受损数据库的尾部时才能使用 NO_TRUNCATE 或 CONTINUE_AFTER_ERROR。

注意:
对受损数据库备份日志尾部时,日志备份中正常捕获的部分元数据可能不可用。有关详细信息,请参阅本主题下文中的“包含不完整备份元数据的尾日志备份”。

在数据库损坏时创建事务日志备份

尾日志备份可捕获日志尾部,即使数据库离线、损坏或缺少数据文件。这可能导致还原信息命令和 msdb 生成不完整的元数据。但只有元数据是不完整的,而捕获的日志是完整且可用的。

如果尾日志备份包含不完整的元数据,则 backupset 表中的 has_incomplete_metadata 将设置为 1。此外,在 RESTORE HEADERONLY 的输出中,HasIncompleteMetadata 将设置为 1

如果尾日志备份中的元数据不完整,则 backupfilegroup 表在尾日志备份时将丢失文件组的大多数相关信息。大多数 backupfilegroup 表列为 NULL;只有以下几列有意义:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly 

不需要尾日志备份的还原方案包括以下几种:

发布日期历史记录

2006 年 7 月 17 日

新增内容:
  • 将跳过尾日志备份的讨论扩展为独立部分“不使用尾日志备份执行还原”。
更改的内容:
  • 更新了“备份日志尾部”部分。

Java实现sqlserver2005的数据库的备份与恢复

1.连接数据库的代码: package com.once.xfd.dbutil; import java.sql.Connection; import java.sql.DriverManager...
  • yellowxiaotian
  • yellowxiaotian
  • 2014年03月06日 13:25
  • 1305

access数据库备份与还原问题

由于本人一开始学习数据库是sql sever ,现在开发用access 2003,所以在做数据库的备份与还原时,第一意识就是利用sql语句来实现,但出现了错误,说“无效的inserted ,updat...
  • zhangzeguang88
  • zhangzeguang88
  • 2012年11月27日 01:30
  • 3444

SQL Server的备份和恢复

作者:朱金灿来源:http://blog.csdn.net/clever101          在上篇博客中谈了Oracle10g的备份和恢复,今天谈了SQLServer的备份和恢复。和Oracle...
  • clever101
  • clever101
  • 2013年06月13日 22:40
  • 2638

CI数据库备份与还原入门小例子

最近看到有几个问CI数据库备份与还原的问题,以前也没做过还原的问题,就此探讨一下:我的思路: 使用CI的数据库工具类进行数据库备份,写入一个SQL文件中,恢复时,用CI的文件辅助函数读取文件内容进行...
  • txqd1989
  • txqd1989
  • 2016年08月01日 10:16
  • 224

ADO.NET 备份还原数据库

献给需要的人和我自己
  • bdbql
  • bdbql
  • 2015年06月16日 16:29
  • 468

thinkphp-mysql数据库的备份与还原

1.首先引入dbBackup.class.php类文件,如下: 注意命名空间: 2.在后台模块建一个控制器DatabaseController.class.php 注意命名空间: 3.引入备份...
  • u014796999
  • u014796999
  • 2015年10月10日 15:04
  • 2017

还原对于服务器失败 备份集中的数据库备份与现有数据库不同

还原对于服务器失败 备份集中的数据库备份与现有数据库不同         今天在SQL Server 2008 R2中还原一个数据库备份,遇到错误。还原对于服务器失败 备份集中的数据库备份与现有数据库...
  • u012025054
  • u012025054
  • 2014年12月22日 16:48
  • 4610

MySQL详解(20)-----------数据库备份和还原

数据备份: 使用mysqldump命令备份 mysqldump命令可以讲数据库中的数据备份成一个文本文件。表结果和表中的数据将存储在生成的文本中。mysqldump的工作原理很简单。他先查出需要备...
  • u011225629
  • u011225629
  • 2015年07月07日 10:21
  • 5184

SSH框架实现MYSQL数据库备份与还原

SSH框架实现数据库备份与还原 一、   SSH下边数据库备份与还原工具类 l  该方法采用Shell命令,可以方便的实现数据库的备份功能查看过上一篇定时器配置的朋友可以发现该类已...
  • libo2158
  • libo2158
  • 2015年04月04日 22:34
  • 1250

java 数据库备份 和 还原

/** * @Description:数据库备份 * @return ModelAndView * @Author:yty */ @PostMapping(value = "/databas...
  • y670340559
  • y670340559
  • 2018年01月12日 15:38
  • 19
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库备份与还原
举报原因:
原因补充:

(最多只允许输入30个字)