7.2.8 SQL Server數(shù)據(jù)庫的備份和恢復(fù)
大到自然災(zāi)害,,小到病毒感染,、電源故障乃至操作員操作失誤等,,都會(huì)影響數(shù)據(jù)庫系統(tǒng)的正常運(yùn)行和數(shù)據(jù)庫的破壞,,甚至造成系統(tǒng)完全癱瘓。數(shù)據(jù)庫備份和恢復(fù)對于保證系統(tǒng)的可靠性具有重要的作用,。經(jīng)常性的備份可以有效的防止數(shù)據(jù)丟失,,能夠把數(shù)據(jù)庫從錯(cuò)誤的狀態(tài)恢復(fù)到正確的狀態(tài)。如果用戶采取適當(dāng)?shù)膫浞莶呗?,就能夠以最短的時(shí)間使數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)損失量最少的狀態(tài),。
SQL Server提供了“分離/附加”數(shù)據(jù)庫、“備份/還原”數(shù)據(jù)庫,、復(fù)制數(shù)據(jù)庫等多種數(shù)據(jù)庫的備份和恢復(fù)方法,。這里介紹一種學(xué)習(xí)中常用的“分離/附加”方法,類似于大家熟悉的“文件拷貝”方法,,即把數(shù)據(jù)庫文件(.MDF)和對應(yīng)的日志文件(.LDF)拷貝到其它磁盤上作備份,,然后把這兩個(gè)文件再拷貝到任何需要這個(gè)數(shù)據(jù)庫的系統(tǒng)之中。比如,,在實(shí)驗(yàn)教學(xué)過程中,,同學(xué)們常常想把自己在學(xué)校實(shí)驗(yàn)室計(jì)算機(jī)中創(chuàng)建的數(shù)據(jù)庫搬遷到自己的計(jì)算機(jī)中而不想重新創(chuàng)建該數(shù)據(jù)庫,就可以使用這種簡單的方法,。但由于數(shù)據(jù)庫管理系統(tǒng)的特殊性,,需要利用SQL Server提供的工具才能完成以上工作,而簡單的文件拷貝導(dǎo)致數(shù)據(jù)庫根本無法正常使用,。
這個(gè)方法涉及到SQL Server分離數(shù)據(jù)庫和附加數(shù)據(jù)庫這兩個(gè)互逆操作工具,。
1、分離數(shù)據(jù)庫就是將某個(gè)數(shù)據(jù)庫(如student_Mis)從SQL Server數(shù)據(jù)庫列表中刪除,,使其不再被SQL Server管理和使用,,但該數(shù)據(jù)庫的文件(.MDF)和對應(yīng)的日志文件(.LDF)完好無損。分離成功后,,我們就可以把該數(shù)據(jù)庫文件(.MDF)和對應(yīng)的日志文件(.LDF)拷貝到其它磁盤中作為備份保存,。
2、附加數(shù)據(jù)庫就是將一個(gè)備份磁盤中的數(shù)據(jù)庫文件(.MDF)和對應(yīng)的日志文件(.LDF)拷貝到需要的計(jì)算機(jī),,并將其添加到某個(gè)SQL Server數(shù)據(jù)庫服務(wù)器中,由該服務(wù)器來管理和使用這個(gè)數(shù)據(jù)庫,。
下面分別介紹這兩個(gè)步驟的操作細(xì)節(jié),。
1、分離數(shù)據(jù)庫
分離數(shù)據(jù)庫的操作由以下6步構(gòu)成,。
1) 在啟動(dòng)SSMS并連接到數(shù)據(jù)庫服務(wù)器后,,在對象資源管理器中展開服務(wù)器節(jié)點(diǎn)。在數(shù)據(jù)庫對象下找到需要分離的數(shù)據(jù)庫名稱,,這里以student_Mis數(shù)據(jù)庫為例,。右鍵單擊student_Mis數(shù)據(jù)庫,,在彈出的快捷菜單中選擇屬性項(xiàng)(圖7-42),則數(shù)據(jù)庫屬性窗口(圖7-43)被打開,。
圖7-42打開數(shù)據(jù)庫屬性窗口
2) 在“數(shù)據(jù)庫屬性”窗口左邊“選擇頁”下面區(qū)域中選定“選項(xiàng)”對象,,然后右邊區(qū)域的“其它選項(xiàng)”列表中找到“狀態(tài)”項(xiàng),單擊“限制訪問”文本框,,在其下拉列表中選擇“SINGLE_USER”,。
圖7-43 數(shù)據(jù)庫屬性窗口
3) 在圖7-43中單擊“確定”按鈕后將出現(xiàn)一個(gè)消息框,通知我們此操作將關(guān)閉所有與這個(gè)數(shù)據(jù)庫的連接,,是否繼續(xù)這個(gè)操作(圖7-44),。注意:在大型數(shù)據(jù)庫系統(tǒng)中,隨意斷開數(shù)據(jù)庫的其它連接是一個(gè)危險(xiǎn)的動(dòng)作,,因?yàn)槲覀儫o法知道連接到數(shù)據(jù)庫上的應(yīng)用程序正在做什么,,也許被斷開的是一個(gè)正在對數(shù)據(jù)復(fù)雜更新操作、且已經(jīng)運(yùn)行較長時(shí)間的事務(wù),。
圖7-44 確認(rèn)關(guān)閉數(shù)據(jù)庫連接窗口
4) 在圖7-44單擊“是”按鈕后,,數(shù)據(jù)庫名稱后面增加顯示“單個(gè)用戶”(圖7-45)。右鍵單擊該數(shù)據(jù)庫名稱,,在快捷菜單中選擇“任務(wù)”的二級菜單項(xiàng)“分離”,。出現(xiàn)圖7-46所示的“分離數(shù)據(jù)庫”窗口。
圖7-45 打開分離數(shù)據(jù)庫窗口
5) 在圖7-46的分離數(shù)據(jù)庫窗口中列出了我們要分離的數(shù)據(jù)庫名稱,。請選中“更新統(tǒng)計(jì)信息”復(fù)選框,。若“消息”列中沒有顯示存在活動(dòng)連接,則“狀態(tài)”列顯示為“就緒”,;否則顯示“未就緒”,,此時(shí)必須勾選“刪除連接”列的復(fù)選框(圖7-47)。
圖7-46 分離數(shù)據(jù)庫窗口
6) 分離數(shù)據(jù)庫參數(shù)設(shè)置完成后,,單擊圖7-46底部的”確定”按鈕,,就完成了所選數(shù)據(jù)庫的分離操作。這時(shí)在對象資源管理器的數(shù)據(jù)庫對象列表中就見不到剛才被分離的數(shù)據(jù)庫名稱student_Mis了(如圖7-47所示),。
圖7-47 student_Mis數(shù)據(jù)庫被分離后的SSMS窗口
2,、附加數(shù)據(jù)庫
附加數(shù)據(jù)庫操作由如下4步構(gòu)成。
1) 將需要附加的數(shù)據(jù)庫文件和日志文件拷貝到某個(gè)已經(jīng)創(chuàng)建好的文件夾中,。出于教學(xué)目的,,我們將該文件拷貝到安裝SQL Server時(shí)所生成的目錄DATA文件夾中。
2) 在圖7-48所示的窗口中,,右擊數(shù)據(jù)庫對象,,并在快捷菜單中選擇“附加”命令,打開“附加數(shù)據(jù)庫”窗口(圖7-49)。
圖7-48 打開附加數(shù)據(jù)庫窗口
3) 在“附加數(shù)據(jù)庫”窗口中,,單擊頁面中間的“添加”按鈕,,打開定位數(shù)據(jù)庫文件的窗口,在此窗口中定位剛才拷貝到SQL Server的DATA文件夾中的數(shù)據(jù)庫文件目錄,,選擇要附加的數(shù)據(jù)庫文件(后綴. MDF ,圖7-49),。
圖7-49 定位數(shù)據(jù)庫文件到附加數(shù)據(jù)庫窗口中
4) 單擊“確定”按鈕就完成了附加數(shù)據(jù)庫文件的設(shè)置工作。這時(shí),,在附加數(shù)據(jù)庫窗口中列出了需要附加數(shù)據(jù)庫的信息(圖7-50),。如果需要修改附加后的數(shù)據(jù)庫名稱,則修改“附加為”文本框中的數(shù)據(jù)庫名稱,。我們這里均采用默認(rèn)值,因此,,單擊確定按鈕,完成數(shù)據(jù)庫的附加任務(wù),。
圖7-50 添加附加的數(shù)據(jù)庫后的附加數(shù)據(jù)庫窗口
完成以上操作,,我們在SSMS的對象資源管理器中就可以看到剛剛附加的數(shù)據(jù)庫student_Mis (圖7-51)。
圖7-51 已經(jīng)附加了數(shù)據(jù)庫student_Mis的SSMS窗口
以上操作可以看出,,如果要將某個(gè)數(shù)據(jù)庫遷移到同一臺計(jì)算機(jī)的不同SQL Server實(shí)例中或其它計(jì)算機(jī)的SQL Server系統(tǒng)中,,分離和附加數(shù)據(jù)庫的方法是很有用的。