MSSQL备份语句以及恢复介绍

----------------------------------------------------------------------
1、SQL数据库恢复模型
----------------------------------------------------------------------
1)完全恢复模型
-----------------
(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)能还原全部数据,并可以将数据库恢复到任意指定的时刻。
(4)为保证实现即时点恢复,对数据库的所有*作都将完整地记入日志,这样,日志占用空间较大,对性能也有所影响。
------------------
(2)大容量日志记录恢复模型
------------------
(1)备份时要备份数据库的数据文件和日志文件
(2)还原时使用数据库的备份的数据文件副本和全部日志信息来恢复数据库。
(3)日志中不记录*作细节(如select into、create index等),而只记录*作的最终结果,因此占用日志空间小。
(4)只支持将数据库还原到事务日志备份的时刻,而不支持即时点恢复,因此可能产生数据丢失。
-------------------
(3)简单恢复模型
-------------------
(1)备份时只备份数据文件,还原时也用备份的数据文件恢复数据库。
(2)只能将数据恢复到数据文件备份的时刻,可能产生最多的数据丢失。
(3)不适于生产系统和大规模*作环境下选用。
-----------------------------------------
alter database d1 set recovery simple     --设置数据库恢复模型
alter database d1 set recovery bulk_logged
alter database d1 set recovery full
----------------------------------------------------------------------
2、备份设备
----------------------------------------------------------------------
1)物理设备
---------------------------
disk:支持本地磁盘或者网络备份
tape:支持磁带机备份
name pipe:支持第三方备份软件
---------------------------
2)逻辑设备
---------------------------
永久备份文件:可以重复使用,应该在备份前创建。
临时备份文件:用于一次性备份,在备份时创建。
-------------------------------------------------
exec sp_addumpdevice 'disk','bak2','e:back_devicebak2.bak' --创建永久磁盘备份设备
exec sp_addumpdevice 'disk','bak3','e:back_devicebak3.bak'
----------------------------------------------------------------------
exec sp_addumpdevice 'disk','bak4','\sv2backupbak4.bak' --创建网络永久磁盘备份设备
exec sp_addumpdevice 'disk','bak5','\sv2backupbak5.bak'
----------------------------------------------------------------------
exec sp_dropdevice 'bak5'              --删除备份设备
----------------------------------------------------------------------
backup database d3 to bak3      --将数据库备份到备份设备
backup database d4 to bak4
----------------------------------------------------------------------
restore headeronly from bak2    --查看备份设备中的内容
----------------------------------------------------------------------
backup database d3 to disk='e:back_filed3.bak'    --将数据库备份到临时备份文件
backup database d4 to disk='e:back_filed4.bak'
----------------------------------------------------------------------
restore database d3 from bak3           --从备份设备还原数据库       
restore database d4 from disk='e:back_filed4.bak' --从备份文件还原数据库
----------------------------------------------------------------------
3、使用多个备份文件存储备份
----------------------------------------------------------------------
1)SQL可同时向多个备份文件进行写*作。如果把这些文件放到多个磁带机或磁盘中,则可提高备份速度。
2)这多个备份文件必须用同业型的媒体,并放到一个媒体集中。
3)媒体集中的文件必须同时使用,而不能单独使用。
4)可以通过format命令将媒体集重新划分,但原备份集中的数据不能再使用。
--------------------------------------------------------------------
backup database d4 to bak4,bak5,bak6 with medianame='bak456',format --备份D4并形成Media Set
backup database d3 to bak4      --失败,因Media set中文件必须同时使用
backup database d3 to bak4,bak5,bak6    --成功,将D3也备份到Media Set中
restore headeronly from bak4,bak5,bak6--查看Media Set中的备份内容
----------------------------------------------------------------------
backup database d4 to bak4 with medianame='bak4',format     --重新划分Media Set
backup database d3 to bak5,bak6 with medianame='bak56',format
----------------------------------------------------------------------
backup database d1 to bak1 with init     --with init重写备份设备中内容
backup database d2 to bak1 with noinit --with noinit将内容追加到备份设备中
restore headeronly from bak1
----------------------------------------------------------------------
4、备份的方法
----------------------------------------------------------------------
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
----------------------------------------------------------------------
3)事务日志备份
-------------------------------------------------------------
(1)基于完全备份。
(2)为递增备份,即备份从上一次备份以来到备份时所写的事务日志。
(3)允许恢复到故障时刻或者一个强制时间点。
(4)恢复时,需要应用完全备份和完全备份后的每次日志备份。
-------------------------------------------------------------
backup database d3 to bak3 with init,name='d3_full' --日志备份,第一次备份时应做完全备份
create table b1(c1 int not null,c2 char(10) not null)
backup log d3 to bak3 with
insert b1 values(1,'a')
backup log d3 to bak3 with
insert b1 values(2,'b')
backup log d3 to bak3 with
insert b1 values(3,'c')
backup log d3 to bak3 with
restore headeronly from bak3
----------------------------------------------------------------------
create table b1(c1 int not null,c2 char(10) not null)    --Full+Log+Diff
backup log d4 to bak4 with
insert b1 values(1,'a')
backup log d4 to bak4 with
insert b1 values(2,'b')
backup database d4 to bak4 with differential,name='d4_diff1'
insert b1 values(3,'c')
backup log d4 to bak4 with
insert b1 values(4,'d')
backup log d4 to bak4 with
insert b1 values(5,'d')
backup database d4 to bak4 with differential,name='d4_diff2'
restore headeronly from bak4
----------------------------------------------------------------------
日志清除
-----------------------------------------
1)如果日志空间被填满,数据库将不能记录修改。
2)数据库在做完全备份时日志被截断。
3)如果将'Trans log on checkpoint'选项设为TRUE,则结果为不保存日志,即没有日志记录,不建议使用。
4)with truncate_only和with no_log设置日志满时清除日志
5)with no_truncate则可以完整保存日志,不清除,即使在数据文件已经损坏情况下。主要用于数据库出问题后在恢复前使用。可以将数据还原到出故障的那一时刻。
-------------------------------------------
exec sp_dboption d3
exec sp_dboption
sp_dboption 'd3','trunc. log on chkpt.','true'     --设置自动清除数据库日志
sp_dboption 'd3','trunc. log on chkpt.','false'    --将自动清除数据库日志的选项去除
----------------------------------------------------------------------
backup log d4 with truncate_only    --设置D4日志满时清除日志,并做清除记录
----------------------------------------------------------------------
backup log d4 with no_log       --设置D4日志满时清除日志,但不做清除记录
----------------------------------------------------------------------
backup log d4 to bak4 with no_truncate--在D4数据库损坏时马上备份当前数据库日志(DEMO)
--------
使用no_truncate
完全+修改1+差异+修改2+差异+修改3+停止SQL,删除数据库数据文件+重启SQL
backup log no_truncate
再还原,可还原到修改3

时间: 2024-10-30 03:31:14

MSSQL备份语句以及恢复介绍的相关文章

Java语言----三种循环语句的区别介绍_java

第一种:for循环 循环结构for语句的格式:      for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体;   } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; for (int i = 1;i<=10 ; i++ ) { if (i%2 ==0) { //

Java中for、while、do while三种循环语句的区别介绍_java

本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; fo

命令-mysql5..7用之前的数据库备份语句发生错误,有人懂吗?

问题描述 mysql5..7用之前的数据库备份语句发生错误,有人懂吗? 命令如下: F:MySQLMySQL Server 5.7bin>mysqldump -u root -p student > d:/dd.sql发生如下错误:mysqldump: [ERROR] unknown option '--no-beep' 解决方案 http://segmentfault.com/blog/tony/1190000000420195 解决方案二: http://blog.csdn.net/xia

探索ORACLE不完全恢复之--基于备份控制文件恢复

探索ORACLE不完全恢复之--基于备份控制文件恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com 基于备份控制文件(unsing backup controlfile)的恢复 主要适用于:基于备份控制文件的恢复只要适用于以下情况:表空间被意外删除:所有控制文件全部损坏.   1.关闭数据库执行一次全库冷备份: SQL> select file_name from dba_data_files;  

Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍

先来定义分页语句将要用到的几个参数: int currentPage ; //当前页 int pageRecord ; //每页显示记录数 以之前的ADDRESSBOOK数据表为例(每页显示10条记录): 一.SqlServe下载 分页语句 String sql = "select top "+pageRecord +" * from addressbook where id not in (select top "+(currentPage-)*pageRecor

MySQL备份还原——mysqldump工具介绍

mysqldump是一款MySQL逻辑备份的工具,他将数据库里面的对象 (表)导出成SQL脚本文件.有点类似于SQL SEVER的"任务-生成脚本"的逻辑备份功能.mysqldump是比较常用的备份方法,适合于在不同MySQL版本之间的迁移.升级.不足之处就是数 据库比较大时,mysqldump的效率不高. mysqldump的主要参数收集整理注释如下,如果你要查看mysqldump的具体参数信息,可以使用命令mysqldump –help --add-drop-table      

Mysql备份压缩及恢复数据库方法总结

  一般情况我们通过mysqldump来备份MySQL数据库,并上传至其它备份机器.如果数据库比较大,在备份传输的时候可能会慢,所以我们尽量让备份的文件小一些. 在写自动备份脚本时,最好把备份结果直接压缩,恢复时也可以直接由压缩备份恢复.下面介绍如何使用bzip2和gzip进行压缩mysql备份文件. 备份并用bzip压缩: 代码如下   mysqldump | bzip2 > outputfile.sql.bz2 从bzip2备份恢复: 代码如下   bunzip2 < outputfile

MSSQL 2000 错误823恢复

一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析 SQL Server数据库 823 错误的原因一般是:数据库物理页面损坏,有时可能是页面有但是校验值损坏,导致无法识别该页面,也有可能因为断电或者文件系统问题出现页面丢失了也会报这个823错误. 三.恢复过程 1 尝试附加数据库,然后修复数据库 图一: 2 使用北亚MSSQL文件检测工具对数据库进行检测 图二: 3 计算并修改数据

mysqldump备份数据库 mysql恢复数据库

mysqldump 备份与恢复数据库 备份: 1.备份全部数据库的数据和结构  mysqldump -uroot -pjsb -A > /bk/all.sql -A: 备份所有数据库=--all-databases  2. 备份全部数据库的结构(加 -d 参数) mysqldump -uroot -p123456 -A -d > F:\all_struct.sql  -A: 备份所有数据库=--all-databases    --no-data, -d:只导出表结构 4.备份单个数据库的数据