Web環境下SQL Server資料備份與恢復

2021-04-17 04:54:15 字數 4005 閱讀 9741

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

sqltemplate: 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

sqltemplate: 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

sqltemplate: 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

sqlusername: 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、結束語

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

web環境下的hhvm效能測試

hiphop vm hhvm 是facebook推出的用來執行php 的虛擬機器,它是乙個php的jit just in time 編譯器,同時具有產生快速 和即時編譯的優點。根據facebook透漏,hhvm在速度方面獲得了顯著改進,比目前使用的php直譯器快60 而使用記憶體減少90 hhvm虛...

windows環境下svn同步web檔案

windows環境下svn同步web檔案 svn在團隊開發中使用非常普遍,是乙個很方便的版本控制 系統。www.2cto.com 如果要是能將svn伺服器上的資料自動發布到web伺服器,那將是整個專案開發 測試更加便捷。利用svn的hook功能就能實現將svn伺服器上的資料同步到web伺服器。思路 ...

Debian 7 1 下配置各種WEB環境

一 nginx 一 發布nodejs示例 1 在 etc nginx conf.d目錄下,新建站點名配置,如 sitename.conf 2 在sitename.conf加入如下內容 server 二 發布jsp示例 同 一 發布nodejs示例 三 發布php5示例 1 將 etc php5 fp...