指導書原文
數據庫的備份與恢復SSMS
【實驗目的】
1) 熟悉并掌握利用界面操作進行數據庫備份和恢復的原理和操作。
【實驗原理】
1) 數據庫的恢復包括大容量日志恢復模式和簡單恢復模式。其中大容量日志恢復模式,簡單地說就是要對大容量操作進行最小日志記錄,節省日志文件的空間(如導入數據、批量更新、SELECT INTO等操作時)。而在簡單恢復模式下,數據庫會自動把不活動的日志刪除,因此簡化了備份的還原,但因為沒有事務日志備份,所以不能恢復到失敗的時間點。通常,簡單恢復模式只用于對數據庫數據安全要求不太高的數據庫,并且在該模式下,數據庫只能做完整和差異備份。
【實驗環境】
windows7
SQL SERVER 2008
【實驗步驟】
一、建表
1.1 開始→程序→Microsoft SQL Server 2008 R2→SQL Server Management Studio。
1.2 在“連接到服務器”對話框中,選擇“Windows 身份驗證”,點擊“連接”,進 入SQL Server Management Studio操作界面。
1.3 創建student數據庫(新建查詢 并輸入語句“create database student”)。利用如下SQL語句在student數據庫中創建表(通過“use databasename;”語句或”展開數據庫->右擊 databasename->選擇新建查詢“,選擇要操作的數據庫,再執行查詢、插入等操作命令)。
CREATE TABLE Student (
Sno char ( 7 ) PRIMARY KEY,
Sname char ( 10 ) NOT NULL,
Ssex char (2),
Sage tinyint ,
Sdept char (20)
)
CREATE TABLE Course (
Cno char(10) NOT NULL,
Cname char(20) NOT NULL,
Ccredit tinyint ,
Semester tinyint,
PRIMARY KEY(Cno)
)
CREATE TABLE SC
(
Sno char(7) NOT NULL,
Cno char(10) NOT NULL,
Grade tinyint,
XKLB char(4) ,
PRIMARY KEY ( Sno, Cno ) ,
FOREIGN KEY (Sno) REFERENCES Student (Sno),
FOREIGN KEY (Cno) REFERENCES Course (Cno)
)
二、完整性備份
2.1 單擊服務器對象—>備份設備—>新建備份設備。如圖1所示
圖?1
2.2 創建永久備份設備:backup1,backup2。如圖2、圖3所示
圖 2
圖 3
2.3 備份設備backup1、backup2創建成功。如圖4所示
圖 4
2.4 右鍵student數據庫,選擇任務—>備份。如圖5所示
圖 5
2.5 對student數據庫進行一次完整備份,并以追加的方式被分到backup1設備上。如圖6所示
圖 6
2.6 執行下述語句刪除students數據庫中的SC表drop table sc。如圖7所示
圖 7
2.7 刪除student數據庫。如圖8所示
圖 8
2.8 右鍵數據庫,選擇還原數據庫。如圖9所示
圖 9
2.9 選擇源備份,單擊瀏覽按鈕。如圖10所示
圖 10
2.10 選擇備份設備,添加backup1。如圖11所示
圖 11
2.11 利用backup1設備上對student數據庫進行的完整備份,恢復出student數據庫。如圖12所示
圖 12
2.12 數據庫student還原成功。如圖13所示
圖 13
三、差異備份
3.1 右鍵student數據庫,選擇任務—>備份。如圖14所示
圖 14
3.2 對student數據庫進行一次完整備份并以覆蓋的方式備份到backup1設備上,覆蓋掉backup1設備上已有的備份內容。如圖15所示
圖 15
3.3 行下述語句在course表中插入一行新記錄:INSERT INTO Course VALUES('C201','離散數學','','')。如圖16所示
圖 16
3.4 將student數據庫以覆蓋的方式差異備份到backup2設備上。如圖17、圖18所示
圖17
圖 18
3.5 執行語句刪除新插入記錄: DELETE FROM Course WHERE Cno='C201'。如圖19所示
圖 19
四、日志備份
4.1 刪除student數據庫。如圖20所示
圖 20
4.2 右鍵數據庫,選擇還原數據庫。如圖21所示
?圖 21
4.3 選擇源設備,單擊瀏覽按鈕。如圖22所示
圖 22
4.4 選擇備份設備,添加備份設備backup1。如圖23所示
圖 23
4.5 將student數據庫的恢復模式設置為“完整”并進行還原。如圖24所示
圖 24
4.6 對student數據庫進行一次完整備份,以覆蓋的方式備份到backup1上。如圖25所示
圖 25
4.7 執行下述語句向Course表中插入一行新記錄:INSERT INTO Course VALUES('C2002','編譯原理','','') 。如圖26所示
圖 26
4.8 對student數據庫進行差異備份,并以追加的方式備份到backup1上。如圖27所示
圖 27
4.9 執行語句: DELETE FROM Course WHERE Cno='C202' 。如圖28所示
圖 28
4.10 對student數據庫進行一次日志備份,并以覆蓋的方式備份到backup2。如圖29所示
圖29
圖 29
實驗報告
刪除Warning
采用drop database student命令,我這邊是根本刪不掉數據庫的。他的報錯是:
消息 3702,級別 16,狀態 3,第 1 行 無法刪除數據庫 "student",因為該數據庫當前正在使用。
對此,首先我跳出了這個數據庫,use另外的數據庫,但是刪不了
然后,采用手動刪除,結果如下:
于是我破防了,這個實驗在我這里實現不了,希望做成功的同志們評論區見,造福后人。
我只能把除了刪除的操作做完,下面就是結果圖。
日志備份warning
日志備份,在現在的SQLserver里面也沒有,我同學問了老師。。。說不用做。
五、實驗過程原始記錄(數據、圖表、計算等)
①完整性備份結果
②差異備份的結果
?
③日志備份結果
?
六、實驗結果及分析
問題描述:利用backup1和backup2備份設備對students數據庫的備份,恢復數據庫。完全恢復后,在Course表中有新插入的記錄嗎?為什么?
答:沒有,這是因為:
在實驗的完整性備份部分,backup1 設備上存儲的是 student 數據庫的完整備份。這個備份是在執行 INSERT INTO Course 插入新記錄之前創建的。因此,恢復 backup1 設備上的完整備份時,數據庫的狀態會回到備份時的狀態,即 Course 表中不會有后續插入的新記錄。
在實驗的差異備份和日志備份部分,雖然進行了差異備份和日志備份,但在恢復時只使用了 backup1 設備上的完整備份。差異備份和日志備份記錄了備份之后對數據庫的修改(例如插入記錄的操作),但這些備份需要在恢復完整備份之后依次應用,才能恢復數據庫到最新的狀態。由于實驗中沒有提到應用差異備份和日志備份,因此恢復后的數據庫狀態不會包含這些后續的修改。
在實驗的 2.11 步驟中,僅使用 backup1 設備上的完整備份恢復了數據庫。這種恢復方式只能還原到完整備份的時間點,而無法還原后續的更改,如插入記錄的操作。
因此,完全恢復后,Course 表中不會有新插入的記錄,因為恢復操作僅使用了完整備份,而沒有應用后續的差異備份或日志備份。