用VB備份和恢復SQLServer數(shù)據(jù)庫的方法

字號:

對于關鍵應用的數(shù)據(jù)庫系統(tǒng)應根據(jù)具體環(huán)境和條件制訂一個完善可行確保系統(tǒng)安全的備份計劃,沒有備份的系統(tǒng)是不可靠、危險的,后果將是嚴重的,破壞性病毒、誤操作、自然災害等等都可能會對數(shù)據(jù)庫系統(tǒng)造成難以估量的破壞。尤其對一個信息化程度較高的企業(yè)來說,最有價值的財產(chǎn)或許就是企業(yè)數(shù)據(jù)庫中的數(shù)據(jù)。一個系統(tǒng)中最重要的是大量的實時數(shù)據(jù),沒有備份功能顯然是不安全和不完善的。經(jīng)過實踐摸索出Visual Basic 6.0開發(fā)的備份程序,能將數(shù)據(jù)庫備份到Access數(shù)據(jù)庫(Access 為目前流行的桌面型數(shù)據(jù)庫產(chǎn)品, 具有存儲操作靈活、便利等優(yōu)點, 并且因它與SQL Server 同屬微軟數(shù)據(jù)庫產(chǎn)品, 二者能很好地兼容)中,并對Access數(shù)據(jù)庫進行加密以防數(shù)據(jù)被非法訪問。該程序還能用Access備份庫的數(shù)據(jù)恢復SQL Server數(shù)據(jù)庫,從而減少因誤操作損壞數(shù)據(jù)內容而造成的損失。使用該方法,用戶不須添加額外設備,只須在原有服務器上運行該備份程序,其界面簡單方便,適合普通用戶使用。
    備份與恢復概述
    備份是數(shù)據(jù)庫管理員定期地將整個數(shù)據(jù)庫復制到磁帶或另一個磁盤上保存起來的過程。常用的數(shù)據(jù)備份類型有:完全備份、差異備份、事務日志備份、文件或文件組備份。一個通用的備份策略是:以較長的時間間隔執(zhí)行完全備份,以適中的時間間隔進行差異備份,并以較短的時間間隔進行事務日志備份。當數(shù)據(jù)遭到破壞后就可以利用備份來恢復數(shù)據(jù)庫?;謴蛿?shù)據(jù)庫是一個裝載數(shù)據(jù)庫的備份,然后應用事務日志重建的過程。一個通用的恢復策略是:首先恢復完全備份的數(shù)據(jù),然后恢復差異備份數(shù)據(jù),最后根據(jù)事務日志備份進行恢復。
    1、備份方案
    開發(fā)所需軟件:Visual Basic 6.0 Access備份程序的設計方法:
    (1) 用控制面版的ODBC設置,給SQL Server中的數(shù)據(jù)庫添加一個數(shù)據(jù)源名稱。
    (2) 在Access中新建一個數(shù)據(jù)庫,命名為backup.mdb。
    (3) 用VB定義兩個主要過程:Attach_Table()和Create_Table()。Attach_Table的作用是將SQL Server數(shù)據(jù)庫中的所有需要備份的表鏈接到Access數(shù)據(jù)庫中,在此過程中要排除系統(tǒng)表,因為那是SQL Server自創(chuàng)建的,表中無用戶數(shù)據(jù)。Create_Table的作用是在backup.mdb中創(chuàng)建目的表,即在這個備份Access庫中創(chuàng)建表用來保存所有存在SQL數(shù)據(jù)庫中的用戶數(shù)據(jù)。另外,在鏈接過程中,要去掉SQL Server自帶的擁有者名稱。
    2、程序的邏輯結構
    ① 通過第一步創(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()對每個表創(chuàng)建與之對應的備份表,取名可遵循如下原則, 若原表叫table_name, 則備份表叫b_table_name。
    ④ 將table_name表中的所有記錄復制到b_table_name中。
    ⑤從備份庫刪除對SQL數(shù)據(jù)表的鏈接。