Day 9:(15)備份與恢復--參考答案
阿新 • • 發佈:2019-02-20
實訓要求:熟悉備份裝置及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應該怎樣做才能找回誤刪除的資料。
要求:執行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應該怎樣做才能找回誤刪除的資料。