您的位置:首頁技術文章
文章詳情頁

Web環境下的SQL Server數據備份與恢復

瀏覽:137日期:2023-11-04 16:51:11
1、前言

實現磁帶備份數據的功能有兩方面的困難:首先,MS SQL Server(以下簡稱SQL)所提供的數據庫的整體備份及恢復功能不能直接滿足本系統要求的數據滾動備份。其次,需要解決如何在Web環境下實現磁帶數據備份功能。

利用SQL中現有的數據庫備份和恢復的命令以及NT中的IDC技術,實現SQL數據庫中數據滾動備份到磁帶的功能。本系統所實現功能既能保證近一段時間的數據總在數據庫中,又能保證系統管理員可隨時恢復備份數據,供用戶查詢。本文所實現的功能具有普遍的意義,特別適用于中小型企業開發基于Intranet技術的管理信息系統。

2、磁帶數據備份及恢復的工作過程

為了充分利用SQL中現有的數據庫備份與恢復功能,以降低實現磁帶數據備份的代價,我們特地在硬盤上建立了一個與磁帶的容量相當的數據庫,我們稱之為橋數據庫,如FJJDBBK??煞奖愕貙崿F數據的滾動備份了。其工作過程是:管理員把某月的數據從主數據庫移到橋數據庫中;然后用SQL的備份功能把橋數據庫備份到磁帶上。用戶需要查看磁帶中的歷史數據時,系統又用SQL的恢復備份功能把磁帶中的數據恢復到橋數據庫中,用戶直接在橋數據庫中查閱歷史數據。此外,在數據備份到磁帶后,在進行下次數據備份前,必須清空備份數據庫中的數據。為了提高工作效率,我們建立了一個空白橋數據庫(沒有數據時的橋數據庫)。每次進行磁帶備份數據之前,就用此空白數據庫恢復橋數據庫。空白數據庫文件建立后要保存好,不可隨便刪除。

建立該備份空白數據庫過程為:先建立主數據庫FJJDBBK,然后在FJJDBBK中建立與當前數據庫中一樣結構的表。建立這些表結構時最好的方法是先用Enterprise Manager的Object菜單下的Generate SQL Scripts功能生成建立這些表的Scripts文件,然后選擇FJJDBBK數據庫,用Enterprise Manager的Tools菜單下的Query Analyzer功能運行該文件,就建立了這些所需表。顯然,這時的FJJDBBK為空數據庫。我們再利用備份命令或運行Tools菜單下的Backup/Restore功能備份該空數據庫。

3、磁帶數據備份及恢復的實現

在NT中,Web服務器IIS(Internet Information Server)提供了完善的訪問SQL的技術IDC。IDC是一個DLL文件(HTTPODBC.DLL),其實,它通過ODBC接口可訪問各種數據庫。在具體實現Web頁面訪問數據庫時,需建立兩種類型的文件:IDC文件(*.idc)和HTML模板文件(*.htx)。IDC文件用于控制數據庫的訪問。它一般由兩部分組成:

◆文件頭 

指明系統數據源,模板文件名,用戶名及口令。有時還包括一些有關檢索數據庫方面的參數設置。

◆文件主體 

這部分內容以“SQLStatement:”為起始標志,然后寫操縱數據庫的標準SQL語句。注意,每條語句以“+”號開頭,它作為區分每條SQL語句的標志。需要強調的是,對于MS SQL數據庫,IDC可用其任何標準的命令及函數。例如定義變量,控制數據流等(見實例)。

IDC的處理流程如下:首先,Web服務器IIS分析瀏覽器傳來的URL字符串。如果當前字符串以“*.idc”結尾,就將該IDC請求傳給IDC接口模塊,IDC將依次讀取并解釋IDC文件的內容,通過ODBC模塊向數據庫服務器發服務請求;數據庫服務器將執行結果通過ODBC接口返回給IDC模塊。接著IDC模塊把結果插入指定的的模板文件,形成一個實際的HTML文件交給IIS;最后由IIS將該HTML返回瀏覽器。

在Web信息系統中要實現完整的磁帶數據備份及恢復功能需要實現以下三個功能:“數據備份”功能、“數據恢復”功能和“清理數據”功能。“數據備份”功能在保證系統管理員操作的前提下,根據用戶輸入的所要備份數據的起始日期和終止日期,從主數據庫把要備份的數據轉存到橋數據庫中,然后運用SQL的DUMP命令實現該功能?!皵祿謴汀惫δ軇t在保證系統管理員操作的前提下,提供“恢復橋數據庫”和“恢復空白橋數據庫”的功能。只要運用SQL的LOAD命令就可實現上述功能;同樣,“清理數據”功能也要保證在系統管理員操作的前提下,根據用戶輸入的所要刪除數據的起始日期和終止日期,運用SQL中的DELETE命令刪除當前數據庫中數據。因此。為了“數據備份”功能和“清理數據”功能的順利實施,要求每個表都有歸檔時間字段。

實現本系統磁帶數據備份與恢復功能的部分IDC文件如下:

/*BKUP.IDC*/

Datasource: Web SQL

Template: BKUP.htx

Username: sa

Password: sa

SQLStatement:

+if %jb%=1

+/*判斷系統維護員*/

+SELECT qsrq=convert(varchar(12),getdate(),1),

zzrq=convert(varchar(12),+dateadd(day,1,getdate()),1)

+/*預置起始日期和終止日期*/

/*BKUPCZ.IDC*/

Datasource: Web SQL

Template: BKUPCZ.htx

Username: sa

Password: sa

SQLStatement:

+INSERT FJJDBBK.DBO.JKLD SELECT * FROM FJJDB.DBO.JKLD

+where convert(varchar(12),gdsj,1)>=′%QSRQ%′

and convert(varchar(12),gdsj,1)< =′%ZZRQ%′

…………

+/*把當前數據庫中選定的數據轉存到橋數據庫中*/

+DUMP DATABASE FJJDBBK TO TAPE = ′.tape0′ WITH INIT, NOUNLOAD

+/*備份數據*/

+SELECT TS=′備份數據庫操作已完成!′

/*HUIF.IDC*/

Datasource: Web SQL

Template: HUIF.htx

Username: sa

Password: sa

SQLStatement:

+if %jb%=1

+begin

+LOAD DATABASE FJJDBBK FROM TAPE=′.TAPE0′ WITH

NOUNLOAD

+/*恢復備份數據*/

+SELECT TS=′恢復數據庫操作已完成!′+/*

+end

/*QLSJKCZ.IDC*/

Datasource: Web SQL

Username: sa

Password: sa

Template: QLSJKCZ.htx

SQLStatement:

+delete FJJDB.DBO.JKLD

where convert(varchar(12),gdsj,1)>=′%QSRQ%′ and

convert(varchar(12),gdsj,1)<=′%ZZRQ%′

…………

+/*刪除當前數據庫中選定的數據*/

+SELECT TS=′刪除操作已完成!′

在本系統中,主數據庫保證存儲4個月數據。系統規定,系統管理員每月月初備份上月的數據到磁帶。然后刪除前第4個月的數據。實現了當前數據與歷史數據的同步查閱,這是Web系統的一個顯著的優點。

4、結束語

本文介紹了一種特殊的數據磁帶備份與恢復的具體實現方法。需要指出的是,數據庫備份操作是數據庫管理系統非常重要的環節,而數據庫備份操作過程又比較復雜,因此,要求我們必須建立完善的規章制度,由專業的系統管理員進行數據庫備份和恢復操作。

標簽: Sql Server 數據庫
国产综合久久一区二区三区