鮑 通
[摘要]隨著計算機的普及和信息技術的進步,特別是計算機網絡的飛速發(fā)展,信息安全的重要性日趨明顯。但是,作為信息安全的一個重要內容數據備份的重要性卻往往被人們所忽視。只要發(fā)生數據傳輸、數據存儲和數據交換,就有可能產生數據故障。這時,如果沒有采取數據備份和數據恢復手段與措施,就會導致數據的丟失。有時造成的損失是無法彌補和估量的。
[關鍵詞]數據備份 數據恢復 信息安全 丟失
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0420050-02
一、背景簡介
隨著計算機的普及和信息技術的進步,特別是計算機網絡的飛速發(fā)展,信息安全的重要性日趨明顯。但是,作為信息安全的一個重要內容數據備份的重要性卻往往被人們所忽視。只要發(fā)生數據傳輸、數據存儲和數據交換,就有可能產生數據故障。這時,如果沒有采取數據備份和數據恢復手段與措施,就會導致數據的丟失。有時造成的損失是無法彌補和估量的。因此,數據備份與數據恢復是保護數據的最后手段,也是防止主動型信息攻擊的最后一道防線。
二、需求分析
學生信息管理系統(tǒng)是利用C#.NET+SQL2005數據庫采用B/S模式實現的方便學生網上查詢個人成績和選課信息的管理平臺。學生可以通過系統(tǒng)會員注冊的方法得到權限,進入查詢頁面查詢考試成績、進入編輯頁面進行選課;管理員可以通過系統(tǒng)管理權限,錄入或更改以及刪除學生的考試成績及選課信息,以供學生查詢。避免了學生的長久等待,方便了學生在短期內得知自己近段時間學習的情況以及相關信息。
目前需要在脫離數據庫自動備份功能的條件下,設計功能模塊“一鍵備份(完整備份)、一鍵還原”,嵌入至系統(tǒng)中。確保數據的完整性和安全性;盡量減少占用網絡資源;盡量不影響系統(tǒng)的運行效率;充分有效地利用存儲資源;模塊采用B/S模式,且具有較好的移植性。
作用例:如果系統(tǒng)管理員身在北京出差,隨處可用筆記本電腦網上登陸該系統(tǒng),點擊“一鍵備份”。期間不幸得知南京服務器上的該系統(tǒng)數據庫被刪除或被攻擊,身在北京的管理員可隨處再度登陸該系統(tǒng),點擊“一鍵還原”,即可對南京服務器上的該系統(tǒng)數據庫恢復最后一次備份時間之前的所有數據,以確保系統(tǒng)的正常運行。
三、主要研究的內容和目標
(一)內容分析
1.適應性:在脫離數據庫群集技術的條件下,研究數據怎樣才能更快捷、更準確無誤地,并且有選擇性地進行備份,然后當系統(tǒng)發(fā)生問題時,能及時地進行還原或恢復,以盡可能地減少損失。如果基于數據庫群集技術,那么這種數據備份也可以防止服務共享磁盤損壞帶來的后果,即便所有子服務器的數據庫都癱瘓掉,數據的備份文件依然存在,但需要提前對備份文件進行備份。
2.智能性:系統(tǒng)管理員在客戶端對數據庫做備份時,能得知數據備份的進度,臨時情況,以及結果,且可快捷恢復。
3.安全性:對數據備份進行加密,只有操作員或具有管理角色的用戶可對其進行恢復??蓮娜我鈹帱c進行恢復,選擇性地恢復。對數據備份文件進行再備份,以免人為誤刪。
4.移植性:相對獨立的備份還原功能(低耦合),不會影響系統(tǒng)其他功能的正常運轉,從而可將此功能模塊嵌入至系統(tǒng)中。
(二)研究目標
客戶端對服務器端的數據可進行一鍵備份,一鍵還原,確保安全,確保完整。
四、采用的方法
(一)分析
Visual Studio 2005基于文件的工程開發(fā);母版頁面;用戶控件可視化;泛型;支持嵌入式資源;Visual Studio ASP.NET代碼編輯器。
用C#設計的組件可以很容易的轉換成Web服務,可以以任意操作系統(tǒng)的任意語言從Internet上調用。開發(fā)此應用程序時使用.NET框架和C#語言創(chuàng)建了多線程的服務。對此系統(tǒng)來說,C#這個面向對象的編程語言看起來是最合適做應用程序設計的了;實際上,因為有了來自.NET框架對核心編程任務的支持,我們發(fā)現使用C#比使用VB更容易,且運行效率會更高。
(二)設計
該模塊利用C#語言基于Web完成對SQL2005數據庫備份和還原的功能,實現一鍵備份和一鍵還原,方便快捷易操作。此為系統(tǒng)管理員具備的權限,故此功能模塊欲嵌入至系統(tǒng)后臺。
把數據庫的備份文件都整合到一個文件夾下,用一個相對路徑來識別這個文件夾,從而準確無誤地找到這個數據庫備份設備以進行還原。這個所謂的“定位”和備份功能封裝到一起,操作簡便;內部劃分模塊,分別繼承自備份功能,這樣可面對不同的數據庫對象,而不至于只可針對同一個數據庫,為今后的升級做鋪墊。對于本系統(tǒng),因數據庫為固定名稱,故可對.NET中的Web.config文件進行配置。搭建完SQL數據庫環(huán)境之后實現與.NET相連結,數據庫此時要滿足允許遠程連接的狀態(tài)條件。之后按照詳細設計進入編碼階段。
五、模塊的實現(附主干代碼)
(一)服務器端的布置
1.設置SQL2005的驗證模式為“Windows與SQL混合驗證”;
2.設置SQL允許sa帳戶,密碼設置為1;
3.設置SQL允許遠程訪問;
4.測試連接,確保服務正常運行;
5.檢查數據庫默認備份路徑。
(二)系統(tǒng)的后臺操作
1.備份數據庫到服務器端默認本地路徑.backup文件夾下(系統(tǒng)管理員權限);
2.還原數據庫默認尋找該路徑下已備份的.bak文件;
3.若已備份,則覆蓋之前的備份,數據更新至最后一次的備份時間,待備還原;
4.若無備份,還原功能因尋找不到相應的備份文件而無法實現;
5.連續(xù)重復還原不會對該系統(tǒng)造成影響,但會降低服務器端相關的運行效率。
(三)備份功能的實現
//**************************數據庫備份**********************
******
//引用Web.config的數據庫連接字符串優(yōu)點是數據庫移植的時候可直接對Web.config的數據庫連接字符串中的IP進行更換。 此處省略連接數據庫的代碼
SqlCommand cmdBK = new SqlCommand();
cmdBK.CommandType = CommandType.Text;
cmdBK.Connection = conn;
cmdBK.CommandText = @"backup database SMS to disk='..BackupSMS" + ".bak'" + " with init"; //通過執(zhí)行SQL語句對數據庫進行備份
//接下來可對執(zhí)行的語句進行判斷,若備份成功就彈出備份成功提示框;否則會因服務器連接失敗,或者要備份的數據庫不存在于服務器中,則彈出備份失敗提示框。此處可用try…catch…語句來實現。代碼略。
//此處要殺死所有正在使用要備份數據的數據庫進程,代碼見“還原功能的實現”,此處略。
conn.Open();cmdBK.ExecuteNonQuery();
System.Web.HttpContext.Current.Response.Write("<Script>alert('數據庫備份或更新備份成功!');</Script>");
效果:此時找到SQL默認backup路徑下,會生成數據庫備份文件SMS.bak。
(四)還原功能的實現
此時假設數據庫SMS已經不存在(包括數據庫崩潰),測試中我們人為地刪除數據庫SMS,那么可采用“一鍵還原”功能,如下:
//**************************數據庫還原**********************
*****
//此處省略連接數據庫的代碼
//殺死所有正在使用要還原數據的數據庫進程
SqlCommand cmd = new SqlCommand("SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.
dbid AND sysdatabases.Name='SMS'", conn);
SqlDataReader dr;
dr = cmd.ExecuteReader();
ArrayList list = new ArrayList();
while (dr.Read())
{ list.Add(dr.GetInt16(0)); }
dr.Close();
for (int k = 0; k < list.Count; k++)
{ cmd = new SqlCommand(string.Format("KILL {0}", list[k]), conn); cmd.ExecuteNonQuery(); }
SqlCommand cmdRT = new SqlCommand();cmdRT.CommandType = CommandType.Text;
cmdRT.Connection = conn;
cmdRT.CommandText = @"restore database SMS from disk= '..BackupSMS" + ".bak'" + " ";
cmdRT.ExecuteNonQuery(); //通過執(zhí)行SQL語句對數據庫進行還原
//接下來可對執(zhí)行的語句進行判斷,成敗兩種情況,依然可用try…catch…語句來實現。代碼略
效果:數據庫SMS還原成功,截止最后一次備份的時間之前的所有數據被還原。
六、結論
Asp.net主要是面向程序員的一次改革,它使編寫大型的Web應用程序更為簡便和符合現代軟件工程。就這一點而言,Web應用可以看成是傳統(tǒng)C/S結構的分布式擴展。對比這兩種方式,我們會發(fā)現它們會越來越相似,最后的區(qū)別只在于客戶端是什么。Web應用與C/S的主要不同只在于Web應用的客戶端是基于瀏覽器的,而C/S應用的客戶端則五花八門,什么都有。它們的優(yōu)缺點也將主要由這一點決定。
參考文獻:
[1]微軟公司著,面向.NET的Web應用程序設計,北京:高等教育出版社,2004.
[2]微軟公司著,基于C#的Windows應用程序設計,北京:高等教育出版社,2004.
[3]微軟公司著,高級編程技術,北京:高等教育出版社,2004.
[3]陳克力著,SQL Server2005編程基礎,北京:清華大學出版社,2008.
[4]張海藩著,軟件工程導論,北京:清華大學出版社,2008.
[7]開發(fā)視界論壇,http://www.sf.org.cn/bbs.
[8]CSDN網站,http://blog.csdn.net.