程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Web環境下MS SQL Server中數據的磁帶備份與恢復

Web環境下MS SQL Server中數據的磁帶備份與恢復

編輯:關於SqlServer
摘 要:介紹了磁帶數據備份及恢復的工作過程,包括在硬盤上建立了一個與磁帶的容量相當的數據庫,即橋數據庫
和在Web信息系統中要實現完整的磁帶數據備份及恢復功能。從理論與實踐上闡述了如何利用SQL中現有的數據庫備份和恢
復的命令以及NT中的IDC技術。
  關鍵詞:Web信息系統;磁帶數據備份;橋數據庫;IDC文件;數據恢復


1 引言

  實現磁帶備份數據的功能有兩方面的困難:首先,MS SQL Server(以下簡稱SQL)所提供的數據庫的整體備份及恢復
功能不能直接滿足本系統要求的數據滾動備份。其次,需要解決如何在Web環境下實現磁帶數據備份功能。
  利用SQL中現有的數據庫備份和恢復的命令以及NT中的IDC技術,實現SQL數據庫中數據滾動備份到磁帶的功能。本系統
所實現功能既能保證近一段時間的數據總在數據庫中,又能保證系統管理員可隨時恢復備份數據,供用戶查詢。本文所實
現的功能具有普遍的意義,特別適用於中小型企業開發基於Intranet技術的管理信息系統。

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

  為了充分利用SQL中現有的數據庫備份與恢復功能,以降低實現磁帶數據備份的代價,我們特地在硬盤上建立了一個與
磁帶的容量相當的數據庫,我們稱之為橋數據庫,如FJJDBBK。可方便地實現數據的滾動備份了。其工作過程是:管理員把
某月的數據從主數據庫移到橋數據庫中;然後用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命令實現該功能。"數據恢復"功能則在保證系統管
理員操作的前提下,提供"恢復橋數據庫"和"恢復空白橋數據庫"的功能。只要運用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 結語

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved