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的状态一样的。

步骤3:还原事务日志备份文件TestBackupDB-log.bak,如图7进入事务日志的还原操作界面;看图8的选项中有指定事务的时间进行还原(还原过程中的恢复状态都是默认为RESTORE WITH RECOVERY,所以这里没有提及这个选项)。还原后的TestBackup2数据库,还原之后的数据库TestBackup2如图9所示。

(图7:进入事务日志)

(图8:事务日志)

(图9:还原后的数据库)

三、升级

通常来说文章写到这里就应该结束了,但是很幸运,再给你介绍一下如何在对表进行分区后的还原操作,从上面的操作来看只包括了mdf和ldf文件,但如果多了几个ndf文件,这些还原又一样吗?所以我称这部分的内容为升级。

情景一:如果本来就有对应的分区文件的,只要在还原的时候修改【还原为】的文件名就可以进行还原了。

情景二:如果刚刚新建了分区文件组和文件,这个时候接着还原备份就会出现图10的错误(不知道是不是在SQL Server 2005的问题);要解决这个问题有两个方法,第一个:重启数据库服务再还原;第二个:设置数据库的【限制访问】设置为【Single】;

(图10:错误)

时间: 2024-08-28 04:36:07

sqlserver还原备份(转)的相关文章

SQLServer 以备份初始化订阅

原文:SQLServer 以备份初始化订阅 在创建事务复制时,如果发布数据库很大,使用快照初始化时,将等待很久,如果出现问题可能又得重新初始化.使用备份初始化会省很多时间,但是数据库在创建发布订阅期间不能访问.使用备份代替快照迁移数据,备份可以压缩或使用 FTP 传输,若在同一个机房,拷贝复制更快. 现在测试: 创建测试库(发布服务器) -- 创建测试库(发布服务器) USE [master] GO CREATE DATABASE [PubDB] ON PRIMARY ( NAME = N'Pu

SqlServer定时备份数据库和定时杀死数据库死锁解决

PS:Sqlserver 2008 R2,windows 8 64位 1.备份数据库 因为要备份,我们就要用到Sqlserver的代理,默认数据库的代理是不开启的.需要我们手动开启的. 执行备份数据库脚本,现在将脚本公布,其实将这一段代码中需要保存的文件路径和数据库名称替换一下就可以实现备份了.但是还没有达到定时备份的目的 ? 1 2 3 4 5 6 7 8 9 10 11 --自动备份并保存最近5天的SQL数据库作业脚本 宋彪 20130310 DECLARE @filename VARCHA

mssql2008数据库还原备份教程

一.数据库的还原 很多程序需要搭配mssql数据库,今天我们一起来学习如何对数据库的还原备份的操作.以mssql 2008数据库还原备份bak文件为例: 我们登陆进入MsSql 2008后,右键数据库,选择还原数据库 进入还原界面,如上图 1.选择需要还原的数据库,您要还原的目标数据库可以是还原到您已经有的数据库上也可以新建一个名字,还原成功后自然会出现以您新建的数据库名称的数据. 2.源设备就是您即将要还原的数据库的文件. 3.选择用于还原的备份集,要勾选.否则确认的时候会提示您”必须选择还原

SQLSERVER 差异备份、全备份

--exec BackUPDatabase_LeeHG语句参数说明: -- 示例:exec BackUPDatabase_LeeHG '参数一','参数二','参数三','参数四','参数五',' 参数六' -- 参数一:需要备份数据库的名称 -- 参数二:备份文件存放路径,可以是网络路径 -- 参数三:全备份时间 -- 参数四:全备份时间误差范围(小时) -- 参数五:参数三为网络路径时,访问网络路径的用户名,参数三为本地路径时可输入任意字符. -- 参数六:参数三为网络路径时,访问网络路径的

sqlserver还原bak备份文件

先查看数据库逻辑名称: restore filelistonly from disk='D:/database.bak' 然后恢复: restore database smsdb from disk = 'd:\smsdb.bak' with move '数据库逻辑名称' to 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\db_data.mdf' ,move '日志逻辑名称' to 'C:\Progr

mysql 和 sqlserver中备份一张表的区别

sqlserver中备份一张表 SELECT * into qa_buglist_bak FROM qa_buglist 不管表的数据有多大,速度很快: mysql中上述语句就无效了,须得新建一张表,然后让此长表中新增数据 create table qa_buglist_bak like qa_buglist;insert qa_buglist_bak select * from qa_buglist; 如果原表中数据量大,就特别慢,很吃硬盘和CPU 刚刚看了下,也就800万行的数据.. 我应该

SQLServer 批量备份与还原

备份与还原是数据库避不开的主题,而作为DBA,经常会面临将一台机器上的所有数据库重新构建到一台新机器上的要求: 在现在都讲究自动化管理的时代,传统的界面操作备份还原的做法不仅浪费时间和精力,而且还很容易出错,并且这次完成后, 下次再有这样的要求,必须又重头开始(估计做5次就能做得人狂吐):于是,我们需要一套应对这种频繁操作.耗时.耗精力 的通用处理方法,所以以下批处理脚本就诞生了. 脚本主要的功能: 1. 备份一个服务器上的所有数据库(当然你也可以选择),备份文件按数据库名+日期生成,以.bak

Sqlserver事务备份和还原实例

1 create database mydb 2 use mydb 3 go 4 create table account( 5 id varchar(16), 6 name varchar(16), 7 balance float 8 ) 9 go 10 select * from account 11 12 insert into account(id, name, balance) values('620101', 'liyong', 300) 13 insert into account

sqlServer数据库备份与还原——差异备份与还原

1.差异备份 是完整备份的补充 备份自上次完整备份以来的数据变动的部分 2.备份过程: 在做差异备份之前需要先进行完整备份.完整备份的过程见:https://i.cnblogs.com/EditPosts.aspx?postid=10322955 差异备份与完整备份过程类似,只是备份类型选为差异备份 3.还原过程: 在进行差异还原的时候先要进行完整备份还原,但是要注意要选择上以下两个对勾,否则会报错. 不要着急点击确定,在选项中选中覆盖现有数据库,同时在恢复状态处选择第二个. 点击确定后,可以看