摘要 備份與恢復(fù)是數(shù)據(jù)庫管理員維護(hù)數(shù)據(jù)庫安全性和完整性的重要操作。本文分析并介紹用Access備份SQL數(shù)據(jù)庫的方法,很好地達(dá)到了數(shù)據(jù)備份的目的。同時(shí),就Access 數(shù)據(jù)庫的安全接口作了簡略討論,使備份后不致喪失數(shù)據(jù)安全性。并提出了改進(jìn)備份與恢復(fù)策略的一些建議。
關(guān)鍵詞 SQL Server數(shù)據(jù)庫; Visual Basic 6.0; 數(shù)據(jù)備份;數(shù)據(jù)恢復(fù); Access
引言 對于關(guān)鍵應(yīng)用的數(shù)據(jù)庫系統(tǒng)應(yīng)根據(jù)具體環(huán)境和條件制訂一個(gè)完善可行確保系統(tǒng)安全的備份計(jì)劃,沒有備份的系統(tǒng)是不可靠、危險(xiǎn)的,后果將是嚴(yán)重的,破壞性病毒、誤操作、自然災(zāi)害等等都可能會對數(shù)據(jù)庫系統(tǒng)造成難以估量的破壞。尤其對一個(gè)信息化程度較高的企業(yè)來說,最有價(jià)值的財(cái)產(chǎn)或許就是企業(yè)數(shù)據(jù)庫中的數(shù)據(jù)。一個(gè)系統(tǒng)中最重要的是大量的實(shí)時(shí)數(shù)據(jù),沒有備份功能顯然是不安全和不完善的。經(jīng)過實(shí)踐摸索出Visual Basic 6.0開發(fā)的備份程序,能將數(shù)據(jù)庫備份到Access數(shù)據(jù)庫(Access 為目前流行的桌面型數(shù)據(jù)庫產(chǎn)品, 具有存儲操作靈活、便利等優(yōu)點(diǎn), 并且因它與SQL Server 同屬微軟數(shù)據(jù)庫產(chǎn)品, 二者能很好地兼容)中,并對Access數(shù)據(jù)庫進(jìn)行加密以防數(shù)據(jù)被非法訪問。該程序還能用Access備份庫的數(shù)據(jù)恢復(fù)SQL Server數(shù)據(jù)庫,從而減少因誤操作損壞數(shù)據(jù)內(nèi)容而造成的損失。使用該方法,用戶不須添加額外設(shè)備,只須在原有服務(wù)器上運(yùn)行該備份程序,其界面簡單方便,適合普通用戶使用。
備份與恢復(fù)概述 備份是數(shù)據(jù)庫管理員定期地將整個(gè)數(shù)據(jù)庫復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程。常用的數(shù)據(jù)備份類型有:完全備份、差異備份、事務(wù)日志備份、文件或文件組備份。一個(gè)通用的備份策略是:以較長的時(shí)間間隔執(zhí)行完全備份,以適中的時(shí)間間隔進(jìn)行差異備份,并以較短的時(shí)間間隔進(jìn)行事務(wù)日志備份。當(dāng)數(shù)據(jù)遭到破壞后就可以利用備份來恢復(fù)數(shù)據(jù)庫?;謴?fù)數(shù)據(jù)庫是一個(gè)裝載數(shù)據(jù)庫的備份,然后應(yīng)用事務(wù)日志重建的過程。一個(gè)通用的恢復(fù)策略是:首先恢復(fù)完全備份的數(shù)據(jù),然后恢復(fù)差異備份數(shù)據(jù),最后根據(jù)事務(wù)日志備份進(jìn)行恢復(fù)。
1、備份方案
開發(fā)所需軟件:Visual Basic 6.0 Access備份程序的設(shè)計(jì)方法:
?。?) 用控制面版的ODBC設(shè)置,給SQL Server中的數(shù)據(jù)庫添加一個(gè)數(shù)據(jù)源名稱。
(2) 在Access中新建一個(gè)數(shù)據(jù)庫,命名為backup.mdb。
?。?) 用VB定義兩個(gè)主要過程:Attach_Table()和Create_Table()。Attach_Table的作用是將SQL Server數(shù)據(jù)庫中的所有需要備份的表鏈接到Access數(shù)據(jù)庫中,在此過程中要排除系統(tǒng)表,因?yàn)槟鞘荢QL Server自創(chuàng)建的,表中無用戶數(shù)據(jù)。Create_Table的作用是在backup.mdb中創(chuàng)建目的表,即在這個(gè)備份Access庫中創(chuàng)建表用來保存所有存在SQL數(shù)據(jù)庫中的用戶數(shù)據(jù)。另外,在鏈接過程中,要去掉SQL Server自帶的擁有者名稱。
2、程序的邏輯結(jié)構(gòu)
?、?通過第一步創(chuàng)建的ODBC數(shù)據(jù)源打開要備份的SQL數(shù)據(jù)庫;
?、?使用Attach_Table()將該數(shù)據(jù)庫中的所有用戶表鏈接到backup.mdb中,排除系統(tǒng)表的方法是:
For Each tdf in backup_db.TableDefs If (tdf.attributes And dbSystemObject)=0 Then //條件成立,說明該表是用戶定義的表,可以鏈接,否則跳過 End if Next |
?、?使用Create_Table()對每個(gè)表創(chuàng)建與之對應(yīng)的備份表,取名可遵循如下原則, 若原表叫table_name, 則備份表叫b_table_name。
?、?將table_name表中的所有記錄復(fù)制到b_table_name中。
?、輳膫浞輲靹h除對SQL數(shù)據(jù)表的鏈接。