數(shù)據(jù)庫(kù)的備份和恢復(fù)



單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級(jí),,第三級(jí),,第四級(jí),,第五級(jí),,第12章,數(shù)據(jù)庫(kù)的備份和恢復(fù),,第1,2,章 數(shù)據(jù)庫(kù)的備份和恢復(fù),學(xué)習(xí)要點(diǎn):,,備份的概念,,,備份的類(lèi)型,,,數(shù)據(jù)庫(kù)備份的方法,,,恢復(fù)數(shù)據(jù)庫(kù)的方法,,,,第1,2,章 數(shù)據(jù)庫(kù)的備份和恢復(fù),12.1,備份概述,,,12.2,備份操作,,,12.3,恢復(fù)操作,,,12.4,恢復(fù)數(shù)據(jù)庫(kù)的其他方法,,,12.5,數(shù)據(jù)的導(dǎo)入和導(dǎo)出,,12.1,備份概述,12.1.1 為什么以及何時(shí)備份,,備份是指數(shù)據(jù)庫(kù)管理員定期或不定期地將數(shù)據(jù)庫(kù)部分或全部?jī)?nèi)容復(fù)制到磁帶或磁盤(pán)上保存起來(lái)的過(guò)程當(dāng)數(shù)據(jù)庫(kù)遭到破壞時(shí),可以利用備份進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù)備份的目的就是當(dāng)數(shù)據(jù)庫(kù)發(fā)生意外時(shí),盡可能的減少數(shù)據(jù)的丟失何時(shí)進(jìn)行備份,取決于所能承受數(shù)據(jù)損失的大小執(zhí)行備份操作必須擁有數(shù)據(jù)庫(kù)備份的權(quán)限12.1.2,備份類(lèi)型,,,,SQL Server 2000,支持的備份類(lèi)型有四種,:,,完全數(shù)據(jù)庫(kù)備份,,差異備份,,事務(wù)日志備份,,文件和文件組備份,,1,.完全數(shù)據(jù)庫(kù)備份,,,完全數(shù)據(jù)庫(kù)備份是指?jìng)浞輸?shù)據(jù)庫(kù)中當(dāng)前所有的數(shù)據(jù)包括事務(wù)日志與事務(wù)日志備份和差異備份相比,完全數(shù)據(jù)庫(kù)備份使用的存儲(chǔ)空間多,完成備份操作需要的時(shí)間長(zhǎng),所以完全數(shù)據(jù)庫(kù)備份的創(chuàng)建頻率通常比差異備份或事務(wù)日志備份低。
完全數(shù)據(jù)庫(kù)備份適用備份容量較小、或數(shù)據(jù)庫(kù)中數(shù)據(jù)的修改較少的數(shù)據(jù)庫(kù)2,.差異備份,,,差異備份是指?jìng)浞葑陨洗瓮耆珨?shù)據(jù)庫(kù)備份以來(lái)更改的數(shù)據(jù)差異備份比完全數(shù)據(jù)庫(kù)備份小而且備份速度快,因此可以經(jīng)常地備份,經(jīng)常備份將減少丟失數(shù)據(jù)的危險(xiǎn)差異備份適合于修改頻繁的數(shù)據(jù)庫(kù)3,.事務(wù)日志備份,,,事務(wù)日志備份是指?jìng)浞葑陨洗蝹浞菀詠?lái)數(shù)據(jù)變化的過(guò)程,即事務(wù)日志文件的信息其中的上次備份可以是完全數(shù)據(jù)庫(kù)備份、差異備份或事務(wù)日志備份可以使用事務(wù)日志備份將數(shù)據(jù)庫(kù)恢復(fù)到特定的即時(shí)點(diǎn)(如輸入多余數(shù)據(jù)前的那一點(diǎn))或恢復(fù)到故障點(diǎn)4,.文件和文件組備份,,,文件和文件組備份適合于特大型數(shù)據(jù)庫(kù),因?yàn)橐粋€(gè)很大的數(shù)據(jù)庫(kù)要進(jìn)行完全數(shù)據(jù)庫(kù)備份需要很長(zhǎng)的時(shí)間,那么可以將數(shù)據(jù)庫(kù)的文件和文件組分別進(jìn)行備份備份后如果數(shù)據(jù)庫(kù)發(fā)生了意外,一般應(yīng)遵循如下的步驟來(lái)進(jìn)行恢復(fù):,,(1)如果當(dāng)前日志沒(méi)有損壞,首先備份事務(wù)日志;,,(2)恢復(fù)最近的完全數(shù)據(jù)庫(kù)備份;,,(3)恢復(fù)最近的差異備份(如果進(jìn)行過(guò)差異備份);,,(4)依次恢復(fù)自差異備份以后的所有事務(wù)日志備份,,(按備份的先后順序恢復(fù))12.1.3,恢復(fù)模型,,,,SQL Server 2000,提供了三種恢復(fù)模型,以確定如何備份數(shù)據(jù)以及能承受何種程度的數(shù)據(jù)丟失。
簡(jiǎn)單恢復(fù),,完全恢復(fù),,大容量日志記錄恢復(fù),,,,1.簡(jiǎn)單恢復(fù),,使用簡(jiǎn)單恢復(fù)模型可以將數(shù)據(jù)庫(kù)恢復(fù)到最后一次備份的時(shí)刻的 狀態(tài)不過(guò),無(wú)法將數(shù)據(jù)庫(kù)還原到故障點(diǎn)或特定的即時(shí)點(diǎn)在簡(jiǎn)單恢復(fù)的模型下只能進(jìn)行完全數(shù)據(jù)庫(kù)備份和差異備份2.完全恢復(fù),,完全恢復(fù)提供將數(shù)據(jù)庫(kù)恢復(fù)到故障點(diǎn)或特定即時(shí)點(diǎn)的能力在完全恢復(fù)模型下能進(jìn)行各種備份3.大容量日志記錄恢復(fù),,允許大容量日志記錄操作,對(duì)某些大規(guī)模或大容量復(fù)制操作提供最佳性能和最少的日志使用空間在大容量日志記錄恢復(fù)模型下能進(jìn)行數(shù)據(jù)庫(kù)備份、差異備份和事務(wù)日志備份12.1.4,備份設(shè)備,,,創(chuàng)建備份時(shí),必須選擇存放備份數(shù)據(jù)的備份設(shè)備,即存放備份的存儲(chǔ)介質(zhì)備份設(shè)備可以是磁盤(pán)、磁帶、命名管道當(dāng)建立一個(gè)備份設(shè)備是要分配一個(gè)邏輯名和一個(gè)物理名1,.使用企業(yè)管理器創(chuàng)建備份設(shè)備,1),打開(kāi)“企業(yè)管理器”,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器2)展開(kāi)“管理”文件夾,右擊“備份”,然后單擊“新建備份設(shè)備”命令,彈出“備份設(shè)備屬性”對(duì)話(huà)框,如圖12,-,1 所示圖,12-1,備份設(shè)備屬性對(duì)話(huà)框,,(3)在“名稱(chēng)”框中輸入該備份設(shè)備的名稱(chēng)4)單擊“文件名”,輸入備份設(shè)備的物理文件名或,,單擊瀏覽(“...”)按鈕顯示“備份設(shè)備位置”對(duì),,話(huà)框,再選擇備份設(shè)備所使用的物理文件。
5,)單擊“確定”按鈕完成創(chuàng)建備份設(shè)備操作2.使用系統(tǒng)存儲(chǔ)過(guò)程,sp_,addumpdevice,創(chuàng)建備份設(shè)備,,,sp_,addumpdevice,',device_type,' , ',logical_name,' ,? ',physical_name’,,device_type,是指?jìng)浞菰O(shè)備類(lèi)型,,,磁盤(pán):,disk,;,,磁帶:,tape,;,,,命名管道:,pipe,例,12-1,下面的示例添加一個(gè)名為,,sales_backup,的磁盤(pán)備份設(shè)備,其物理名稱(chēng)為,D:\sales_backup.,bak,EXEC sp_,addumpdevice,'disk', 'sales_backup', 'd:\sales_backup.,bak,',可以使用系統(tǒng)存儲(chǔ)過(guò)程,sp_,dropdevice,刪除備份設(shè)備例,12-2,下面的示例刪除上例創(chuàng)建的備份設(shè)備EXEC sp_,dropdevice,'sales_backup',,12.2,備份操作,,12.2.1,使用企業(yè)管理器備份數(shù)據(jù)庫(kù),,,(1)打開(kāi)“企業(yè)管理器”,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器2)展開(kāi)“數(shù)據(jù)庫(kù)”文件夾,右擊需要的數(shù)據(jù)庫(kù),選擇“所有任務(wù)”子菜單,然后單擊“備份數(shù)據(jù)庫(kù)”,打開(kāi)“,SQL Server,備份”對(duì)話(huà)框,如圖12-2 所示。
圖,12-2,,SQL Server,備份對(duì)話(huà)框,,(3)在“名稱(chēng)”框內(nèi),輸入備份名稱(chēng)在“描述”框中輸入對(duì)備份集的描述也可以不填寫(xiě)描述框4)在“備份”選項(xiàng)下單擊“數(shù)據(jù)庫(kù)—完全”或者選擇其他的備份類(lèi)型5)在“目的”選項(xiàng)下,指定備份存放的位置單擊“添加”可以添加備份文件或備份設(shè)備,如圖12-3 所示6)在“重寫(xiě)”選項(xiàng)下,單擊“追加到媒體”,將備份追加到當(dāng)前備份設(shè)備的內(nèi)容之后;單擊“重寫(xiě)現(xiàn)有媒體”,將重寫(xiě)備份設(shè)備中備份內(nèi)容,即原來(lái)的內(nèi)容被覆蓋7)選擇“調(diào)度”復(fù)選框確定備份操作執(zhí)行的時(shí)間,也可以直接單擊“確定”按鈕,立即執(zhí)行備份操作圖12-3 選擇備份目的對(duì)話(huà)框,,12.2.2,使用,Transact-SQL,語(yǔ)句備份數(shù)據(jù)庫(kù),,,語(yǔ)法形式如下:,,,BACKUP DATABASE,database_name,,,,TO backup_device,,[ WITH [INIT | NOINIT]?[ [ , ] DIFFERENTIAL ]],,,init:,選項(xiàng)表示重寫(xiě)備份集的數(shù)據(jù)Noinit,:,選項(xiàng)表示備份數(shù)據(jù)將追加在原有的內(nèi)容之后,,NOINIT,是 默 認(rèn)設(shè)置Differential:,選項(xiàng)表示差異備份。
例12-3 下例為,sales,數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)完全數(shù)據(jù)庫(kù)備份和一個(gè)差異數(shù)據(jù)庫(kù)備份BACKUP DATABASE sales,,TO sales_backup,,With init,,GO,,BACKUP DATABASE sales,,TO sales_backup,,with differential,,GO,使用,BACKUP log,命令可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行事務(wù)日志備份,,語(yǔ)法形式如下:,,BACKUP LOG database_name TO backup_device,,,例12-4 下例為,sales,數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)事務(wù)日志備份BACKUP LOG sales TO sales_backup,,12.3,恢復(fù)操作,,,恢復(fù)數(shù)據(jù)庫(kù)是加載備份并應(yīng)用事務(wù)日志重建數(shù)據(jù)庫(kù)的過(guò)程在數(shù)據(jù)庫(kù)的恢復(fù)過(guò)程中,用戶(hù)不能進(jìn)入數(shù)據(jù)庫(kù),即數(shù)據(jù)庫(kù)是不能使用的一般而言,總是設(shè)置該數(shù)據(jù)庫(kù)中“單用戶(hù)”選項(xiàng)為真來(lái)限制用戶(hù)訪(fǎng)問(wèn)要恢復(fù)的數(shù)據(jù)庫(kù)SQL Server,中進(jìn)行數(shù)據(jù)庫(kù)恢復(fù),可以使用企業(yè)管理器和,Transact-SQL,語(yǔ)句12.3.1,使用企業(yè)管理器恢復(fù)數(shù)據(jù)庫(kù),,(1)打開(kāi)“企業(yè)管理器”,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器。
2)展開(kāi)“數(shù)據(jù)庫(kù)”文件夾,右擊數(shù)據(jù)庫(kù),指向“所有任務(wù)”子菜單,然后單擊“還 原數(shù)據(jù)庫(kù)”命令彈出“還原數(shù)據(jù)庫(kù)”對(duì)話(huà)框,如圖12-4 所示3)在“還原為數(shù)據(jù)庫(kù)”框中,如果要還原的數(shù)據(jù)庫(kù)名稱(chēng)與顯示的默認(rèn)數(shù)據(jù)庫(kù)名稱(chēng)不同,請(qǐng)?jiān)谄渲羞M(jìn)行輸入或選擇若要用新名稱(chēng)還原數(shù)據(jù)庫(kù),請(qǐng)輸入新的數(shù)據(jù)庫(kù)名稱(chēng)4)單擊“數(shù)據(jù)庫(kù)”,在“要還原的第一個(gè)備份”列表中,選擇要還原的備份集如果要將一個(gè)服務(wù)器上的數(shù)據(jù)庫(kù)備份恢復(fù)到另一個(gè)服務(wù)器上,應(yīng)選擇“從設(shè)備”還原5)在“還原”列表中,單擊要還原的數(shù)據(jù)庫(kù)備份6,)單擊“選項(xiàng)”選項(xiàng)卡,根據(jù)需要進(jìn)行各選項(xiàng)的設(shè)置,如圖,12-5,所示7,)單擊“確定”按鈕開(kāi)始恢復(fù)數(shù)據(jù)庫(kù)圖,12-4,還原數(shù)據(jù)庫(kù)對(duì)話(huà)框,,圖,12-5,還原數(shù)據(jù)庫(kù)對(duì)話(huà)框“選項(xiàng)”選項(xiàng)卡,12.3.2,使用,Transact-SQL,語(yǔ)句恢復(fù)數(shù)據(jù)庫(kù),,語(yǔ)法形式如下:,,,RESTORE DATABASE,database_name,,,,FROM,,backup_device,,[ WITH,,[FILE =,file_number,][ [ , ] { NORECOVERY | RECOVERY | STANDBY=,undo_file_name,} ] ],,,其中:,,FILE =,file_number:,標(biāo)識(shí)要還原的備份集。
例如,,file_number,,為 1 表示備份媒體上的第一個(gè)備份集,,file_number,,為 2 表示第二個(gè)備份集NORECOVERY:,表示還原操作不回滾任何未提交的事務(wù)如果需要恢復(fù)另一個(gè)事務(wù)日志,則必須指定,NORECOVERY,或,STANDBY,選項(xiàng)如果,NORECOVERY、RECOVERY,和,STANDBY,均未指定,則默認(rèn)為,RECOVERY當(dāng)還原數(shù)據(jù)庫(kù)備份和多個(gè)事務(wù)日志時(shí),或在需要多個(gè),RESTORE,語(yǔ)句時(shí)(例如在完整數(shù)據(jù)庫(kù)備份后進(jìn)行差異數(shù)據(jù)庫(kù)備份),,SQL Server,要求在除最后的,RESTORE,語(yǔ)句外的所有其它語(yǔ)句上使用,WITH NORECOVERY,選項(xiàng)RECOVERY:,表示還原操作回滾任何未提交的事務(wù)在恢復(fù)后即可使用數(shù)據(jù)庫(kù)只有在最后一步恢復(fù)是使用例12-4:從,sales_backup,備份設(shè)備中還原完全數(shù)據(jù)庫(kù)備份后還原差異備份RESTORE DATABASE sales,,FROM sales_backup,,WITH NORECOVERY,,,,RESTORE DATABASE sales,,FROM sales_,buckup,,WITH FILE = 2,,12.4,恢復(fù)數(shù)據(jù)庫(kù)的其他方法,,12.4.1,數(shù)據(jù)庫(kù)的脫機(jī)和聯(lián)機(jī),,,具體操作步驟如下:,,(1)打開(kāi)“企業(yè)管理器”,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器。
2)展開(kāi)“數(shù)據(jù)庫(kù)”文件夾,右擊,Pubs,數(shù)據(jù)庫(kù),指向“所有任務(wù)”子菜單,然后單擊“脫機(jī)”命令3)在,Pubs,數(shù)據(jù)庫(kù)旁出現(xiàn)“脫機(jī)”兩字,操作完成這時(shí)可以對(duì),Pubs,的數(shù)據(jù)庫(kù)文件進(jìn)行復(fù)制脫機(jī)的數(shù)據(jù)庫(kù)要恢復(fù)使用,則使用聯(lián)機(jī)操作12.4.2,分離和附加數(shù)據(jù)庫(kù),,,SQL Server 2000,允許分離數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和事務(wù)日志文件,然后將其重新附加到另一臺(tái)服務(wù)器,甚至同一臺(tái)服務(wù)器上,如果想將數(shù)據(jù)庫(kù)從一臺(tái)計(jì)算機(jī)移到另一臺(tái)計(jì)算機(jī)或者從一個(gè)物理磁盤(pán)移到另一物理磁盤(pán)上,則分離和附加數(shù)據(jù)庫(kù)很有用:一般是先分離數(shù)據(jù)庫(kù);然后將數(shù)據(jù)庫(kù)文件移到另一服務(wù)器或磁盤(pán);最后通過(guò)指定移動(dòng)文件的新位置附加數(shù)據(jù)庫(kù)當(dāng)附加在數(shù)據(jù)庫(kù)時(shí),必須指定主數(shù)據(jù)文件的名稱(chēng)和物理位置12.5,數(shù)據(jù)的導(dǎo)入和導(dǎo)出,,,在實(shí)際工作中我們的數(shù)據(jù)可能存儲(chǔ)在,Excel、Access、Sybase、Oracle,等數(shù)據(jù)庫(kù)中,用戶(hù)有時(shí)需要在,SQL Server,中利用這些數(shù)據(jù),這就需要一種工具能夠?qū)?shù)據(jù)轉(zhuǎn)換到,SQL Server,中SQL Server,提供了一種很容易的把數(shù)據(jù)從一個(gè),SQL Server,數(shù)據(jù)庫(kù)或非,SQL Server,數(shù)據(jù)庫(kù),,傳輸?shù)揭粋€(gè),SQL Server,數(shù)據(jù)庫(kù)的方法,這就是使用數(shù)據(jù)傳輸服務(wù)(,Data Transformation Services,,,DTS)。
通過(guò),DTS,用戶(hù)可以進(jìn)行不同數(shù)據(jù)源之間數(shù)據(jù)的導(dǎo)入、導(dǎo)出和轉(zhuǎn)換12.5.1,數(shù)據(jù)的導(dǎo)入,,,例12-6 將,Excel,表中的數(shù)據(jù)導(dǎo)入,SQL Server,中的,mydb,數(shù)據(jù)庫(kù)中具體操作步驟如下:,,(1)打開(kāi)“企業(yè)管理器”,展開(kāi)服務(wù)器組,然后展開(kāi)服務(wù)器2)右擊“數(shù)據(jù)庫(kù)”,選擇“所有任務(wù)”中的“導(dǎo)入數(shù)據(jù)”,彈出“數(shù)據(jù)轉(zhuǎn)換服務(wù)導(dǎo)入/導(dǎo)出向?qū)А?)單擊“下一步”,出現(xiàn)“選擇數(shù)據(jù)源”對(duì)話(huà)框,在“數(shù)據(jù)源” 下拉列表框中選擇“,Microsoft Excel 97-2000”,,如圖12-9所示對(duì)話(huà)框在“文件名”框中選擇需要導(dǎo)入的文件的路徑和文件名圖12-9 導(dǎo)入/導(dǎo)出選擇數(shù)據(jù)源對(duì)話(huà)框,,圖,12-10,選擇目的,,(4)單擊“下一步”,出現(xiàn)如圖12-10 所示對(duì)話(huà)框選擇目的,在數(shù)據(jù)庫(kù)框中選擇,mydb,圖,12-11,選擇方式,,(,5,),單擊“下一步”,選中“從源數(shù)據(jù)復(fù)制表和視圖”,如圖,12-11,所示對(duì)話(huà)框圖,12-12,選擇表和視圖對(duì)話(huà)框,,(,6)單擊“下一步”,出現(xiàn)如圖12-12所示對(duì)話(huà)框,選擇需要復(fù)制的表和視圖,圖,12-13,保存、調(diào)度和復(fù)制包對(duì)話(huà)框,,(,7,)單擊“下一步”,出現(xiàn)保存、調(diào)度和復(fù)制包對(duì)話(huà)框,如圖,12-13,所示,。
圖,12-14,完成對(duì)話(huà)框,,(,8,)單擊“下一步”,出現(xiàn)完成對(duì)話(huà)框,如圖,12-14,所示圖,12-15,數(shù)據(jù)導(dǎo)入對(duì)話(huà)框,,(9)單擊“完成”按鈕,開(kāi)始復(fù)制數(shù)據(jù)如圖12-15所示12.5.2,數(shù)據(jù)的導(dǎo)出,,數(shù)據(jù)的導(dǎo)出是指將,SQL Server,中的數(shù)據(jù)轉(zhuǎn)為用戶(hù)指定的格式的過(guò)程,例如將,,SQL Server,表的內(nèi)容復(fù)制到,,Microsoft Access,數(shù)據(jù)庫(kù)中使用向?qū)瓿蓴?shù)據(jù)的導(dǎo)出工作的步驟和數(shù)據(jù)的導(dǎo)入相似小結(jié):,,本章主要介紹了,SQL Server2000,的備份和恢復(fù)的相關(guān)知識(shí)講述了備份的四種類(lèi)型,備份設(shè)備的創(chuàng)建,通過(guò)企業(yè)管理器和,Transact-SQL,語(yǔ)句進(jìn)行備份和恢復(fù)的具體操作的方法,以及數(shù)據(jù)的導(dǎo)入和導(dǎo)出。
