1. 程式人生 > >Day 9:(15)備份與恢復--參考答案

Day 9:(15)備份與恢復--參考答案

實訓要求:熟悉備份裝置及sql server 2000的各種備份方式;熟悉獲得備份歷史資訊的方法


要求:執行script.sql指令碼
一、基本內容
1、在硬碟的d:\backup\backupdb目錄中建立一個邏輯名為fullbackupdevice,物理名為fbd.bak的備份裝置
   execute sp_addumpdevice 'disk' , 'fullbackupdevice' , 'd:\backup\backupdb\fbd.bak'
--   execute sp_dropdevice 'fullbackupdevice' ,'delfile' 'd:\backup\northword\fbd.bak'
2、在backupdb中,執行下面程式碼 create table tbl1(col int),對backupdb資料庫進行一次完全備份,結果存放在fullbackupdevice中,備份結果名(name)為“backupdb完全備份1”,描述(description)
   資訊為“2009年2月26日實訓,對backupdb完全備份進行第一次完全備份”
backup database backupdb to fullbackupdevice 
with 
name = 'backupdb完全備份1' ,
description = '2009年2月26日實訓,對backupdb完全備份進行第一次完全備份'
3、在backupdb中,執行下面程式碼create table tbl2(col int),對backupdb資料庫進行一次差異備份,結果存放在fullbackupdevice(實訓者自己建立)中,備份結果名(name)為“backupdb差異備份1”,
   描述(description)資訊為“2009年2月26日實訓,對backupdb完全備份進行第一次差異備份”
backup database backupdb to fullbackupdevice 
with differential,
name = 'backupdb差異備份1' ,
description = '2009年2月26日實訓,對backupdb完全備份進行第一次差異備份'
4、在backupdb中,執行下面程式碼create table tbl3(col int),對backupdb資料庫進行一次日誌備份,結果存放在fullbackupdevice中,備份結果名(name)為“backupdb日誌備份1”,描述(description)
   資訊為“2009年2月26日實訓,對backupdb完全備份進行第一次完全備份”
backup log backupdb to fullbackupdevice 
with
name = 'backupdb日誌備份1' ,
description = '2009年2月26日實訓,對backupdb完全備份進行第一次日誌備份'
5、獲得備份裝置fullbackupdevice中的描述資訊
restore labelonly from  fullbackupdevice
--獲得媒體名和描述資訊
restore headeronly  from  fullbackupdevice
--獲得媒體名和描述資訊
restore filelistonly  from  fullbackupdevice
6、使用之前的三次備份結果還原backupdb資料庫。
   在backupdb中,執行下面程式碼create table tbl4(col int)
   提示:
   /****資料庫崩潰時的搶救操作****/
   1、no_truncate backup log
   2、norecovery restore database 完全備份
   3、norecovery restore database或者log 差異備份、日誌備份
   4、reconvery resotre log 1中的日誌檔案


    backup log backupdb to disk = 'd:\temp.bak'with no_truncate,format
    
   restore database backupdb from fullbackupdevice with file = 1,norecovery
   --可選  restore database backupdb from fullbackupdevice with file = 2,norecovery
   restore log backupdb from fullbackupdevice with file = 3,norecovery
   restore log backupdb from disk = 'd:\temp.bak' with recovery
   --檢驗
select * from backupdb.dbo.tbl1
select * from backupdb.dbo.tbl2
select * from backupdb.dbo.tbl3
select * from backupdb.dbo.tbl4
7、完全刪除(從檔案系統中)備份裝置fullbackupdevice
   execute sp_dropdevice 'fullbackupdevice', 'delfile'


8、詳述sql server 2000支援的四種備份方式(完全、差異、日誌等)的優缺點和使用情況,完成下表:   
   備份方式     資料量    備份時間     對使用者影響時間   對資料庫結構的熟悉度          使用情況   
     完全         大        長              長               不要求           適用於作為其它備份的基礎
     差異
     日誌
     檔案
9、將backupdb資料庫的還原模式分別修改為完全、簡單、大容量日誌的,並同時進行完全、差異、日誌備份,以驗證不同的還原模式對
   備份的影響,完成如下表格:  
   資料庫還原模式         完全備份          差異備份           日誌備份
     完全                   可以             可以               可以
     簡單
    大容量日誌的




思考題:
1、有一個商業客戶工作時間每日從9:00到17:00,每週日休息,請問給如何執行備份計劃以保證資料安全?並驗證你的備份計劃


2、使用者a從事資料庫相關的開發工作,在工作用使用資料庫crm,
資料庫crm中有一個表格customers,定義如下:
create table customers
(
uid int identity(1,1),
fullname varchar(20),
createdate datetime
)
表格中有如下資料:
insert into customers
values ('aaa',dateadd(m,-1,getdate()))
insert into customers
values ('bbb',dateadd(m,-2,getdate()))
insert into customers
values ('ccc',dateadd(m,-3,getdate()))
使用者a正在對該資料庫進行除錯,做了如下操作,
1、進行了一次完全備份
2、插入新記錄
insert into customers
values ('ddd',dateadd(m,1-,getdate()))
3、更新資料
update customers
set fullname = 'abc'
where fullname = 'ddd'
4、刪除記錄
delete from customers


在除錯後用戶a發現由於delete沒有where子句導致全部資料被刪除,需要將
刪除之前的記錄找回。已知,使用者a在除錯之前已經做了一次完全備份,
那麼a應該怎樣做才能找回誤刪除的資料。