一. 概述

  在sql server
备份与还原连串的首先篇里,有讲到大容积方式下备份与回复的有关文化。那篇主要来演示在大体量形式下常用的备份与回复模式“完整备份+差别备份+日志备份”。
在大体积苏醒形式下,特别要在意的是在什么样情形下会引致数据复苏错失风险,带着这么些题目,来张开身体力行验证。备份计策如下图所示:

澳门皇冠金沙网站 1

一.概述

  前边介绍了简要复苏形式和大容积复苏形式,那篇延续写完整苏醒形式下的备份与还原。在总体恢复方式里最大的独特之处是只要能不辱任务备份尾日志,就能够恢复到日志备份内包涵的此外时点(“时点苏醒”)。当然比较前三种方式它是就义了磁盘I/O质量。

恢复模式

备份策略

数据安全性

I/O性能

简单恢复

完整备份+差异备份

安全最差。最后一次备份之后,所有数据操作丢失。

最优

大容量恢复

完整备份+差异备份+日志备份

折中。批量操作有丢失风险。尾日志备份失败。最后一次备份之后,所有数据操作丢失

折中

完整恢复

完整备份+差异备份+日志备份

相比上面二种最安全。尾日志备份失败。最后一次备份之后,所有数据操作丢失

最差

  在完整恢复生机形式下,最布满的备份计策,如下图所示:澳门皇冠金沙网站 2

一.概述

  当数据库发生损坏,数据库的每种文件都能打开,只是个中的有的页面坏了,这种景况能够依靠DBCC
CHECKDB进行数据库检查修复。就算要保管数据库不屏弃,或修复不佳,管理员只好做数据库完整过来,为了少数页面复苏整个数据库,代价是相比较高的,sql
server引进了页面还原文用,能够钦赐还原若干页面,从而能够大大节约数据库恢复生机时间。
  页面还原用于修复隔开分离的损伤页面,还原恢复生机时间比文件更加快,降低了回复进程中处于离线的数据量,当有个别文件的大气页面都现身损坏,能够间接还原该公文(须求有文件备份)。要开展复原的页面是在拜会该页面,遭逢错误而标记为”可疑”,能够尝试去找msdb.dbo.suspect_pages表。在页面还原后,也急需还原全部的日志文件备份
  1.1 还原的界定,不能够东山复起的页
    (1)事务日志不能够回复。
    (2)分配页面:全局分配映射GAM页面,分享全局分配映射SGAM页面和可用空间PFS页面,那些种类页面损坏,页面还原不只怕恢复生机。
    (3)全部数据文件的页面0 的(文件运转页面卡塔 尔(英语:State of Qatar)。
    (4)页面1:9的(数据库运行页面)。
  1.2 还原典型
    (1) 必须选用完整苏醒方式。
    (2) 只读文件组中的页面不或然复苏。
    (3) 还原顺序必得是从完整备份,文件备份中回复页面最初。
    (4) 页面还原要求收尾到眼下天记文件的总是日志备份
    (5) 数据库备份和页面还原不能够同一时间开展。

一.概述

  前面讲了备份的局地理论知识,那篇起首讲在简短恢复生机方式下的备份与回复。在简易情势下是无法做日志备份的,发生灾荒后,数据库最终二遍备份之后做的多寡校勘将是整整甩掉的,所以在生养景况下,数据又相当的重大,日常不建议选择这种方式。
举例对四个数据库有5次完整数据备份,时间是t5,  之后发出祸患,就能够部错过。

澳门皇冠金沙网站 3

  当数据库更大,完整备份时间会更加的长,为了减小错失风险,引进差别备份。比方下图演示:在率先次建构数据库完整备份后,创立了三次差距备份,之后再建构完整备份,进而创立新的分歧基准。不管是完好备份照旧间隔备份,平时只好在夜幕扩充。如若数量相比较宏大又不容许长日子数额遗失,那轻便复苏方式是不能够满意的。

澳门皇冠金沙网站 4

一. 概述

  文件备份是指备份贰个或多少个文本或文件组中的保有数据。使用文件备份能够只还原损坏的文本,而不用还原数据库的别样部份,进而加速苏醒速度。例如,借使数据库由位于不一致磁盘上的多少文件组成,在里面一个磁盘产生故障时,只需还原那几个故障磁盘上的文件,其余磁盘文件无须还原,那样缩小还原时间。

  在完全恢复形式下,一站式完完全全文件备份和含有全数文件备份的日志备份合起来,等同于二个完整数据库备份。

  1.1 文件备份具有如下优点:
    (1)能够飞速复苏损坏的文本。
    (2)当不小型数据库在全部备份下变得难以管理时,文件备份扩大了陈设和传播媒介管理的八面玲珑。

  1.2 文件备份具备不足:
    (1)
与总体数据库备份相比较,文件备份的尤为重要劣点是管理相比复杂。假如某些损坏的文书未备份,那么媒体故障恐怕会促成无法恢复生机整个数据库。由此必需保证风华正茂组完整的文件备份,还必需维护一个或三个日志备份。
    (2)
维护和跟踪那一个完整备份是后生可畏种耗费时间的任务,所需空间会超越全体数据库备份所需的空中。

二.备份

    小编这里有TestBulkLogged库,库里新建了一个product空表。备份SQL语句如下所示:

use master
-- 设置大容量模式
ALTER DATABASE TestBulkLogged SET RECOVERY bulk_logged

-- 做一次完整备份到备份设备中(备份基准) 
backup database  TestBulkLogged to BackupTestDevice

-- 新增
insert into TestBulkLogged.dbo.product(model,upbymemberid,brand) values('第一次新增数据',9708,'IT')

-- 做一次日志备份
backup log   TestBulkLogged to BackupTestDevice

-- 批量插入(5998 行受影响)
insert into TestBulkLogged.dbo.product(model,upbymemberid,brand)
select model,upbymemberid,brand from test.dbo.product

-- 做二次日志备份
backup log   TestBulkLogged to BackupTestDevice

-- 第二次日志备份后的新增
insert into TestBulkLogged.dbo.product(model,upbymemberid,brand) values('第二次新增数据',9708,'IT')

-- 做差异备份
backup database  TestBulkLogged to BackupTestDevice with differential 

-- 全部删除(6000 行受影响)
delete from TestBulkLogged.dbo.product

  查看备份集列表如下图所示:

澳门皇冠金沙网站 5

二. 备份

  在前章中讲到了大容积恢复生机形式下的备份。备份攻略与大容积格局是大器晚成律的,同样是完整备份+差别备份+日志备份。这里要优质点是:当误操作发生后,怎样恢复生机到误操作早前的一分钟,寻找误操作之前的数额。
在”sql server
日志文件结构及误操作数据找回”中有介绍误操作数据找回,可是依赖第三方工具ApexSQL
Log。即便该工具方便,但要收取金钱啊。

  小编那边有二个BackupTest库,库里有个Employees表

use master
--设置完全模式
ALTER DATABASE BackupTest SET  RECOVERY FULL  
--创建备份设备(有就不要执行)
use master
exec sp_addumpdevice 'disk', 'BackupTestDevice','F:\SqlService\backup\BackupTestBackup.bak'
go
--做一次完整备份到备份设备中(备份基准)
backup database  BackupTest to BackupTestDevice

--新增数据
insert BackupTest.dbo.Employees values('湖南长沙')
insert BackupTest.dbo.Employees values('湖南湘潭')
--日志备份
backup log BackupTest to BackupTestDevice

 备份集如下所示:

澳门皇冠金沙网站 6

-- 误操作发生, 忘记加where条件,操作时间是:2018-8-12 10:55  
delete from BackupTest.dbo.Employees 

二.还原步骤      

  (1) 获取要还原的毁损页面包车型大巴页ID,当sql
server蒙受校验或残缺写错误时,会回来页面编号。能够经过询问msdb数据Curry的suspect_pages表,或许监视事件和errorlog文件里记录的错误消息,查找到损坏的页面ID。
  (2)
从包罗页的完整数据库备份,文件备份或文件组备份开首开展页面还原。在restore
database 语句中,使用page子句列出全部要还原的页ID。
  (3) 应用近期的差距备份。
  (4) 应用继续的日志备份。
  (5) 创立新的数据库尾日志备份。
  (6) 还原新的尾日志备份,应用那个新的日记备份后,就做到了页面还原。

二.备份演示

  在轻巧苏醒格局下首要的备份是完全备份和差异备份。笔者那边有TestLog库,Curry有叁个表。假诺周末做贰回完整备份,周后生可畏到周日早晨天天做一遍差距备份,到第二周的礼拜日时起头新的基准线。如下所示

use test
exec sp_addumpdevice 'disk', 'BackupTestDevice','F:\SqlService\backup\BackupTestBackup.bak'

  澳门皇冠金沙网站 7

--设置恢复模式为简单恢复
 ALTER DATABASE TestLog SET RECOVERY simple
go
-- 做一次完整备份到备份设备中(备份基准) 假设在周日晚上
backup database  TestLog to BackupTestDevice
go

澳门皇冠金沙网站 8

go
--差异备份 周一晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周二晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周三晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周四晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周五晚
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周六晚
backup database TestLog to BackupTestDevice with differential 
go
--完整备份 周日晚(新基准)
backup database TestLog to BackupTestDevice with differential 
go
--差异备份 周一晚
backup database TestLog to BackupTestDevice with differential 

 在备份设备中查看备份集
  澳门皇冠金沙网站 9

-- 通过脚本查看

select distinct
s.first_lsn,s.last_lsn,s.database_backup_lsn,s.position,
s.backup_finish_date,s.type,y.physical_device_name,s.backup_size
from msdb..backupset as s inner join
msdb..backupfile as f on f.backup_set_id=s.backup_set_id inner
join
msdb..backupmediaset as m on s.media_set_id=m.media_set_id inner
join
msdb..backupmediafamily as y on m.media_set_id=y.media_set_id
where s.database_name=’TestLog’
order by s.position asc

澳门皇冠金沙网站 10

 

二. 文件备份战略  

   使用文件备份和日志备份还原数据库的操作可能比较复杂,由此最棒先执行总体数据库备份,并在率先个文本备份最早早前,进行日志备份。下图在t0创立数据库后,立刻实践总体数据库备份t1,创建第二个全体数据库备份后,便足以开首推行职业日志备份。事务日志备份按安插的间隔时间推行,文件备份以最相符数据库业务供给的距离实施,上边是先备份主文件组A,再是赞助文件组B。在总体复苏情势下,苏醒叁个文书组备份,不但须求还原版的书文件组备份自身,还须要各样复苏从上三次完整数据库备份后到还原的指标时间点停止的全部日志备份。假使日志备份数据多,能够构思再给合差距文件备份,但那样备份陈设特别难于管理。

澳门皇冠金沙网站 11

 

三. 还原(1)批量插入的是还是不是会甩掉

  通过还原查看批量插入操作是或不是遗失,在备份尾日志时假设报错,
消息如下:”因为数据库正在利用,所以不能得到对数据库的独自占领访谈权”
须求将库设置成单客户方式

use master

-- 先还原完整备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestBulkLogged from BackupTestDevice with file=10, norecovery 

    澳门皇冠金沙网站 12

   在大体量格局下还原时,sql
server会检查测量试验你是或不是开展了尾日志备份,也是保证最后二次日志备份后,所做的多寡操作在还原后不废弃。(万风流洒脱尾日志备份战败,则不见数据卡塔 尔(英语:State of Qatar)。上边先备份一下尾日志,
使用norecovery 暂不提交

-- 尾日志备份
backup log TestBulkLogged to BackupTestDevice with norecovery 

澳门皇冠金沙网站 13

 上航海用体育场地备份了尾日志后,备份集里多出了一个文件号14, 上边在再度上升完整备份

-- (重新)从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestBulkLogged from BackupTestDevice with file=10, norecovery 

    澳门皇冠金沙网站 14

-- 恢复到日志文件11  
restore database TestBulkLogged from BackupTestDevice  with file=11, norecovery

-- 恢复到日志文件12  
restore database TestBulkLogged from BackupTestDevice  with file=12, recovery

    澳门皇冠金沙网站 15

 接下来我们来询问下库中的product表,查看数据是或不是全体上涨。

-- 查询大批量操作的数据,是否已还原出来
select * from TestBulkLogged.dbo.product

  澳门皇冠金沙网站 16

  结论:通过上海教室大家能够精通到,第三次和第二回做的日记备份都康健的还原了复苏。
大量插入操作也得到了还原。证实在大体积格局下,大量操作的多寡,
还原恢复生机可能存在错失的风险,但不必然会抛弃掉

三.还原(1)

  当误操作产生后,是索要找管理员来进展多少恢复生机。
如若数据库太大,还原是要求很短日子(注意选拔别本,不要接收分娩库卡塔尔国。
这种情状下就要求等待了。 幸免的主意:(1)是做sql调查,不在Managemnet
studio里直接操作,幸免此类业务产生.(2)是接收粒度更加小的备份方式,但对应的参差不齐些。

--步骤1 备份尾日志
use master
go
backup log BackupTest to BackupTestDevice with norecovery 

澳门皇冠金沙网站 17

go
--步骤2 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database BackupTest from BackupTestDevice with file=19, norecovery --事务不恢复

--步骤3 
restore log BackupTest from BackupTestDevice  with file=20,  norecovery --事务不恢复

--步骤4 用stopat恢复到10:54
restore log BackupTest from BackupTestDevice  with file=21, stopat='2018/8/12 10:54', recovery --事务恢复

--数据又回来了
select * from  BackupTest.dbo.Employees 

  澳门皇冠金沙网站 18

三. 备份

  为了演示损坏的多少页面,新建二个PageTest表,初步化多个PAGE页,前边人为的毁损贰个数额页面。

use BackupPageTest
-- 创建表
create table PageTest
(
    ID int,
    name varchar(8000)
)
-- 产生
insert into PageTest
select 1, REPLICATE('a',8000)
insert into PageTest
select 1, REPLICATE('b',8000)
insert into PageTest
select 1, REPLICATE('c',8000)

 sys.system_internals_allocation_units 查看分配页意况

 澳门皇冠金沙网站 19

/* 
第1个参数:库名
第2个参数:表名
第3个参数:-1: 显示所有IAM、数据分页、及指定对象上全部索引的索引分页
PageFID: 文件ID
PageType=1 指数据页面
PageType=10 IAM页面
*/ 
-- 未公开的命令,语法如下:
DBCC IND(dbname,tablename,-1)

三. 还原演示

   将三个数据库还原,必要结构一个不利的出山小草顺序。在还原经过中,备份文件结尾使用norecovery事务不回复(正在恢复生机。。卡塔尔国不可读写,在终极三个备份文件结尾使用recovery事务复苏。数据库苏醒经常。

-- 切换到master库
use master

--设置单用户模式(否则执行下面报错:“因为数据库正在使用,所以无法获得对数据库的独占访问权”)
ALTER DATABASE TestLog SET OFFLINE WITH ROLLBACK IMMEDIATE

-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestLog from BackupTestDevice with file=1, norecovery 

  澳门皇冠金沙网站 20澳门皇冠金沙网站 21

-- 恢复到差异备份文件3,跳过差异备份2 ,看是否备份成功
restore database TestLog from BackupTestDevice  with file=3, recovery

  澳门皇冠金沙网站 22澳门皇冠金沙网站 23

-- 备份结束之后,结束单用户模式
ALTER  database  TestLog  set   online  

 上边在来演示还原差距文件,使用旧标准。还原看会如何

-- 从旧基准中恢复一个全备份 ,norecovery(正在还原...)不可读写. file是1
restore database TestLog from BackupTestDevice with file=1, norecovery 

--新基准file是8, 恢复到差异备份文件9 
restore database TestLog from BackupTestDevice  with file=9, recovery

澳门皇冠金沙网站 24

 

 计算:对于简易苏醒方式,未有日记备份,苏醒只须求贰个完整数据库备份,以至尾声叁个不一样备份。
对于三个出入备份文件,在还原时无需LSN的三番五次性(在同一个规范化内)。

三.文书还原  

   当八个大数据库有多少个文本和文件组,要是破坏只是汇总在里头三个文件或文件组上,sqlserver只要把坏掉的不胜数据文件组重新建立,确定能够节省时间。可是数据库的职业校正是会分布在相继数据文件上的,假诺用备份只回复在那之中一个文书,而其它文件不重作冯妇,那么它们的景观必然会不相符,那样数据库是不能够运用的,为了使新苏醒的公文能够活动还原备份现在做的退换,就须求依赖事务日志。使用文件备份还原三个或多个受到伤害文件的步子如下:

  (1) 创设活动工作日志的尾日志备份。
对于离线文件还原,在文书还原早先必得一贯先实行一回尾日志备份。对于在线文件还原,在文书还原之后必须一贯先进行壹回日志备份。因为日志文件四日损坏,文件还原则无法张开。

  (2) 从各种损坏的文书的摩登文件备份还原相应文件。

  (3)
针对各种还原的文件,还原近期的差距文件备份(假若有,因为这么还原快)

  (4)
按梯次还原事情日志备份,从时间上最先备份的日记文件开首,到步骤1的尾日志截至。

 四. 还原(2)打断日志链

  在前边陈述事情日志时涉嫌了, 事务日志链LSN,
在回复的时候应当要保全事务链的相继,依次的回涨。
上边演示跳过日志链文件ID:11 ,直接回复日志链文件ID:12。

-- 尾日志备份
backup log TestBulkLogged to BackupTestDevice with norecovery 

-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestBulkLogged from BackupTestDevice with file=10, norecovery 

-- 跳过日志文件11,恢复到日志文件12  
restore database TestBulkLogged from BackupTestDevice  with file=12, recovery

  澳门皇冠金沙网站 25

  结论:借使独有(完整备份和事务日志备份卡塔尔国,
在还原时,事务日志必得保持LSN顺序,依次还原,再不还原战败就能放弃数据。

四.还原(2)

  在前边介绍中,有讲过,完整恢复生机方式切换来大体积格局,日志链是不会暂停。上边来验证

--从完整恢复模式切换到大容量模式
ALTER DATABASE BackupTest SET  RECOVERY bulk_logged 
-- 新增
insert BackupTest.dbo.Employees values('湖南株洲')
--日志备份
backup log BackupTest to BackupTestDevice
-- 删除
delete from BackupTest.dbo.Employees 

-- 尾日志
backup log BackupTest to BackupTestDevice with norecovery 

 备份集如下所示,日志文件ID:22是在大容积形式下备份的,23是尾日志

澳门皇冠金沙网站 26

restore database BackupTest from BackupTestDevice with file=19, norecovery --事务不恢复
restore log BackupTest from BackupTestDevice  with file=20,  norecovery --事务不恢复
restore log BackupTest from BackupTestDevice  with file=21,  norecovery --事务不恢复
restore log BackupTest from BackupTestDevice  with file=22,  recovery 

  当日志还原到文件ID:22时,报错,如下图所示

澳门皇冠金沙网站 27

   跳过文件ID:22, 使用23来交付业务,也会报错,如下所示:

restore log BackupTest from BackupTestDevice  with file=23,  recovery

澳门皇冠金沙网站 28

   经过测量试验,还原战败,错误是指:与上一遍恢复生机到指依时期点有涉嫌。

  上边在测量试验多个新库TestFULLToBulk

--设置完全模式
ALTER DATABASE TestFULLToBulk SET  RECOVERY FULL  
--做一次完整备份到备份设备中(备份基准)
backup database  TestFULLToBulk to BackupTestDevice
insert TestFULLToBulk.dbo.product values('湖南株洲')
--日志备份
backup log TestFULLToBulk to BackupTestDevice
--设置大容量
ALTER DATABASE TestFULLToBulk SET RECOVERY bulk_logged   

insert TestFULLToBulk.dbo.product values('湖南湘潭')
--日志备份
backup log TestFULLToBulk to BackupTestDevice

  备份集如下:文件ID28是在大体量下开展的备份

  澳门皇冠金沙网站 29

backup log TestFULLToBulk to BackupTestDevice with norecovery 
go
restore database TestFULLToBulk from BackupTestDevice with file=26, norecovery 
go
restore log TestFULLToBulk from BackupTestDevice  with file=27,  norecovery 
go
restore log TestFULLToBulk from BackupTestDevice  with file=28,  recovery 

  上面还原成功,表明了完整复苏形式切换成大容积形式,日志链是不会停顿。

 

  澳门皇冠金沙网站 30

use master
-- 完整备份
backup database  BackupPageTest to BackupTestDevice

四 . 数据初叶化  

--第一步: 创建数据库
CREATE DATABASE [FileGroupTest]
go
USE [FileGroupTest]

--第二步:创建文件组
ALTER DATABASE [FileGroupTest] ADD FILEGROUP [FG_Test_Id_01]
ALTER DATABASE [FileGroupTest] ADD FILEGROUP [FG_Test_Id_02]

--第三步:创建文件添加到文件组
ALTER DATABASE [FileGroupTest] ADD FILE
(NAME = N'FG_TestUnique_Id_01_data',FILENAME = N'D:\Data\FG_TestUnique_Id_01_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )
TO FILEGROUP [FG_Test_Id_01]

ALTER DATABASE [FileGroupTest] ADD FILE
(NAME = N'FG_TestUnique_Id_02_data',FILENAME = N'D:\Data\FG_TestUnique_Id_02_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB )
TO FILEGROUP [FG_Test_Id_02]

--第四步创建表存放在不同文件上
CREATE TABLE  Student(ID INT,Name varchar(50),[Address] varchar(100)) ON [FG_Test_Id_01]
CREATE TABLE  Teacher(ID INT,Name varchar(50),[Address] varchar(100)) ON [FG_Test_Id_02]
CREATE TABLE  School(ID INT,Name varchar(50),[Address] varchar(100)) ON [PRIMARY]

澳门皇冠金沙网站 31

澳门皇冠金沙网站 32

-- 养成好习惯先进行完整备份
backup database  [FileGroupTest] to BackupTestDevice

五. 还原(3) 依靠差别备份下的日志还原

  在生养条件中,由于日记文件备份频仍,招致日志文件太多,假设按日志文件叁个二个来还原,须求大量光阴和精力。上边演示间接从间隔备份还原开头,看后边的日记文件是不是能还原成功。

澳门皇冠金沙网站 33

-- 尾日志备份
backup log TestBulkLogged to BackupTestDevice with norecovery 

-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestBulkLogged from BackupTestDevice with file=10, norecovery 

-- 恢复到差异备份文件13. 跳过日志文件11,12 
restore database TestBulkLogged from BackupTestDevice  with file=13, recovery

 
 上面还原是跳过了日记文件,直接行使差别备份文件还原。我们来查看下表中的数据,会发觉异样备份完全能够回复无误成功。

  澳门皇冠金沙网站 34

上边是异样备份与日志备份组合来还原,结论是日记文件无需一个一个来平复,能够一直定位到,三个差别备份来还原,再恢复,之后的日志文件。

-- 尾日志备份
backup log TestBulkLogged to BackupTestDevice with norecovery 

-- 从备份恢复一个全备份 ,norecovery(正在还原...)不可读写. file指备份集位置号
restore database TestBulkLogged from BackupTestDevice with file=10, norecovery 

-- 恢复到差异备份文件13. 跳过日志文件11,12 
restore database TestBulkLogged from BackupTestDevice  with file=13, norecovery

-- 恢复到日志文件14 
restore database TestBulkLogged from BackupTestDevice  with file=14, recovery

   结论:有了异样备份,在还原时就节约了无数上升时间和精力。能够在整机备份的条件内,直接选取最后一回的出入备份加上之后的日记备份来回复。

四 模拟页面损坏

  使用PagePID为89的数量页面举行身体力行,通过dbcc
page查看该页面,知道该页数据是储存的第三条数据。

dbcc traceon (3604)
dbcc page('BackupPageTest',1,89,1)

  澳门皇冠金沙网站 35

  使用 dbcc wirtepage来模拟该面损坏:

-- 未公开的命令语法为如下
dbcc writepage ({ dbid, 'dbname' }, fileid, pageid, offset, length, data)

-- 模拟页面损坏
dbcc writepage(BackupPageTest,1,89,96,10,0x65656565656565656565)

澳门皇冠金沙网站 36

-- 查询该表时,第三条数据显示NULL
select * from PageTest

五. 备份演示

-- 给二个表插入数据
insert into Student values(1,'张三','广东深圳')
insert into Teacher values(1,'李四','广东佛山')

-- 日志备份
backup log  [FileGroupTest] to BackupTestDevice

-- 给二个表插入数据
insert into Student values(2,'张三2','广东深圳')
insert into Teacher values(2,'李四2','广东佛山')

-- 日志备份
backup log  [FileGroupTest] to BackupTestDevice

-- 文件组FG_Test_Id_01备份
backup database [FileGroupTest] file='FG_TestUnique_Id_01_data' to BackupTestDevice

-- 给二个表插入数据
insert into Student values(3,'张三3','广东深圳')
insert into Teacher values(3,'李四3','广东佛山')
-- 日志备份
backup log  [FileGroupTest] to BackupTestDevice
-- 给二个表插入数据
insert into Student values(4,'张三4','广东深圳')
insert into Teacher values(4,'李四4','广东佛山')
-- 日志备份
backup log  [FileGroupTest] to BackupTestDevice

-- 文件组FG_Test_Id_02备份
backup database [FileGroupTest] file='FG_TestUnique_Id_02_data' to BackupTestDevice

-- 给主文件组表插入数据
insert into School values(1,'深圳大学','广东深圳南山')
-- 主文件组备份
backup database [FileGroupTest] file='FileGroupTest' to BackupTestDevice

  查看备份集如下图所示:type=F 代表文件组备份类型

澳门皇冠金沙网站 37

  澳门皇冠金沙网站 38

--更新第三条数据,结果报错
update PageTest set  id=2  where ID is null

  澳门皇冠金沙网站 39

-- 插入第4条是成功的
insert into PageTest
select 4, REPLICATE('d',8000)

  澳门皇冠金沙网站 40

六. 复原演示

--步骤1:假设文件FG_TestUnique_Id_01_data已损坏,数据库处于在线状态来还原该文件
restore database [FileGroupTest] file='FG_TestUnique_Id_01_data' 
from BackupTestDevice with file=33, norecovery 

  澳门皇冠金沙网站 41

--此时FileGroupTest库还能用,但FG_Test_Id_01文件组上的Student表现不能用,此时处于离线状态
select * from FileGroupTest.dbo.Student

  澳门皇冠金沙网站 42

--这两个表在不同文件组上,可以使用
select * from FileGroupTest.dbo.School
select * from FileGroupTest.dbo.Teacher

    澳门皇冠金沙网站 43
 BACKUP LOG 与 COPY_ONLY
选项将创设仅复制日志备份,该备份不会截断事务日志。
仅复制日志备份对日志链未有其他影响,因而其余日志备份的展现就好像仅复制备份不设有相符。

--步骤2:进行新的日志备份,以确保捕获到该文件离线时的点
backup log  [FileGroupTest] to BackupTestDevice with copy_only

  澳门皇冠金沙网站 44

--步骤3: 在线还原日志备份
restore log [FileGroupTest] from BackupTestDevice with file=34,norecovery
restore log [FileGroupTest] from BackupTestDevice with file=35,norecovery
restore log [FileGroupTest] from BackupTestDevice with file=38,recovery

--离线的文件组FG_Test_Id_01处于在线状态,Student表可以使用,数据库恢复完成
select * from FileGroupTest.dbo.Student

  澳门皇冠金沙网站 45

五. 获取要修复的数额页面 

-- 使用checkdb检查
DBCC CHECKDB(BackupPageTest)

  通过校验,提示不或者管理面(1:89)如下图

  澳门皇冠金沙网站 46

六. 还原

use master
--从完整数据库备份,开始还原,指定要还原的PAGE页
restore database BackupPageTest page='1:89' from BackupTestDevice with file=39,  norecovery
--创建新的尾日志备份
backup log BackupPageTest to BackupTestDevice

 
 那时候访谈数据表PageTest将会发错,如下图所示,注解在还原经过中数量是不可访谈的。

 澳门皇冠金沙网站 47

澳门皇冠金沙网站 48

--最后还原新的尾日志备份
restore log BackupPageTest from BackupTestDevice with file=40,  recovery

   数据修复过来了,如下图:

  澳门皇冠金沙网站 49

  再度CHECKDB 检查表状态

  澳门皇冠金沙网站 50

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图