server|備份|恢複|資料|資料庫 摘要 備份與恢複是資料庫管理員維護資料庫安全性和完整性的重要操作。本文分析並介紹用Access備份SQL資料庫的方法,很好地達到了資料備份的目的。同時,就Access 資料庫的安全介面作了簡略討論,使備份後不致喪失資料安全性。並提出了改進備份與恢複策略的一些建議。
引言
對於關鍵應用的資料庫系統應根據具體環境和條件制訂一個完善可行確保系統安全的備份計劃,沒有備份的系統是不可靠、危險的,後果將是嚴重的,破壞性病毒、誤操作、自然災害等等都可能會對資料庫系統造成難以估量的破壞。尤其對一個資訊化程度較高的企業來說,最有價值的財產或許就是企業資料庫中的資料。一個系統中最重要的是大量的即時資料,沒有備份功能顯然是不安全和不完善的。經過實踐摸索出Visual Basic 6.0開發的備份程式,能將Database Backup到Access資料庫(Access 為目前流行的案頭型資料庫產品, 具有儲存操作靈活、便利等優點, 並且因它與SQL Server 同屬微軟資料庫產品, 二者能很好地相容)中,並對Access資料庫進行加密以防資料被非法訪問。該程式還能用Access備份庫的資料恢複SQL Server資料庫,從而減少因誤操作損壞資料內容而造成的損失。使用該方法,使用者不須添加額外裝置,只須在原有伺服器上運行該備份程式,其介面簡單方便,適合普通使用者使用。
備份與恢複概述
備份是資料庫管理員定期地將整個資料庫複寫到磁帶或另一個磁碟上儲存起來的過程。常用的資料備份類型有:完全備份、差異備份、交易記錄備份、檔案或檔案組備份。一個通用的備份策略是:以較長的時間間隔執行完全備份,以適中的時間間隔進行差異備份,並以較短的時間間隔進行交易記錄備份。當資料遭到破壞後就可以利用備份來恢複資料庫。恢複資料庫是一個裝載資料庫的備份,然後應用交易記錄重建的過程。一個通用的恢複策略是:首先恢複完全備份的資料,然後恢複差異備份資料,最後根據交易記錄備份進行恢複。
1、備份方案
開發所需軟體:Visual Basic 6.0 Access備份程式的設計方法:
(1) 用控制面版的ODBC設定,給SQL Server中的資料庫添加一個資料來源名稱。
(2) 在Access中建立一個資料庫,命名為backup.mdb。
(3) 用VB定義兩個主要過程:Attach_Table()和Create_Table()。Attach_Table的作用是將SQL Server資料庫中的所有需要備份的錶鏈接到Access資料庫中,在此過程中要排除系統資料表,因為那是SQL Server自建立的,表中無使用者資料。Create_Table的作用是在backup.mdb中建立目的表,即在這個備份Access庫中建立表用來儲存所有存在SQL資料庫中的使用者資料。另外,在連結過程中,要去掉SQL Server內建的擁有者名稱。
2、程式的邏輯結構
① 通過第一步建立的ODBC資料來源開啟要備份的SQL資料庫;
② 使用Attach_Table()將該資料庫中的所有使用者錶鏈接到backup.mdb中,排除系統資料表的方法是:
For Each tdf in backup_db.TableDefs
If (tdf.attributes And dbSystemObject)=0 Then
//條件成立,說明該表是使用者定義的表,可以連結,否則跳過
End if
Next
③ 使用Create_Table()對每個表建立與之對應的備份表,取名可遵循如下原則, 若原表叫table_name, 則備份表叫b_table_name。
④ 將table_name表中的所有記錄複製到b_table_name中。
⑤從備份庫刪除對SQL資料表的連結。
3、程式原碼
採用微軟DAO (Data Access Object) 資料模型, 開啟Access 本機資料庫, 並串連一個外部ODBC資料表, 拷貝該表結構完成, 有以下過程塊CopyStru :
Private Sub copyStru ()
Set dbsTemp = wrkjet. OpenDatabase (tagFilName)// 連結資料表的過程
For i = 0 To tabN - 1
Set tdfLinked = dbsTemp. CreateTableDef (“linkTab”)
tdfLinked. Connect = “OdbC; DATABASE = xgsbgsys ; UID =
sa ; PWD = ; DSN = xgsdb ;”
tdfLinked. SourceTableName = tabName (i)
dbsTemp. TableDefs. Append tdfLinked
Set temp Tab = dbsTemp. CreateTableDef ()
temp Tab. Name = tabName (i)
//建立新表的過程
For Each fld In tdfLinked. Fields
Set newFil = temp Tab. CreateField (fld. Name , fld. Type ,fld. Size)
newFil. OrdinalPosition = fld. OrdinalPosition
newFil. Required = fld. Required
temp Tab. Fields. Append newFil
Next
//建立索引
For Each idx In tdfLinked. Indexes
Set newIdx = temp Tab. CreateIndex ()
With newIdx
Name = tabName (i) & ” x”
Fields = idx. Fields
Unique = idx. Unique
Primary = idx. Primary
End With
temp Tab. Indexes. Append newIdx
Next
dbsTemp. TableDefs. Append temp Tab
Set temp Tab = Nothing
dbsTemp. TableDefs. Delete ”linkTab”
Next i
dbsTemp. Close
Set dbsTemp = Nothing
wrkjet. Close
Set wrkjet = Nothing
End Sub
End Sub
[1] [2] 下一頁