黃澤雄
(民航汕頭空管站 技術(shù)保障部,廣東 揭東 515558)
目前SQL Server 在空管軟件信息系統(tǒng)中應(yīng)用日趨廣泛,以汕頭空管站為例,擁有SQL Server 數(shù)據(jù)庫的有包括轉(zhuǎn)報系統(tǒng)、航班不正常統(tǒng)計系統(tǒng)、CNMS 等多套系統(tǒng)。而面對數(shù)據(jù)庫的主要維護工作,越來越重視數(shù)據(jù)的安全性,如何在短時間內(nèi)可靠安全恢復(fù)原有數(shù)據(jù)庫數(shù)據(jù)成為空管技術(shù)保障的一個課題。本文將從實際出發(fā),探討以SQL Server 數(shù)據(jù)庫為主的數(shù)據(jù)庫備份手段,給相關(guān)技術(shù)保障維護提供一個參考。
全數(shù)據(jù)庫備份將可以恢復(fù)整個數(shù)據(jù)庫,對于數(shù)據(jù)庫完整性來說很關(guān)鍵相對其他方式也較為簡單。缺乏靈活性的它耗時較長,所以對于可以容易重新創(chuàng)建數(shù)據(jù)的數(shù)據(jù)庫、不經(jīng)常修改的數(shù)據(jù)庫可以不考慮,而對于空管信息化系統(tǒng)來說,這種備份基本不用,因為數(shù)據(jù)庫數(shù)據(jù)變化較大,例如航班信息處理系統(tǒng)(FIPS)除了主要數(shù)據(jù)表,其庫表變化較大,所以不建議整庫備份,對于實際意義也不大。
以某個時間點的全量數(shù)據(jù)為基礎(chǔ),備份該時刻后的數(shù)據(jù)。因此該方式運行恢復(fù)實際所作備份點以后的數(shù)據(jù),而基礎(chǔ)需要事務(wù)日志備份加以輔助。對于該方式來說,時間和空間消耗較小,應(yīng)用廣泛,在空管系統(tǒng)中常用于SQL 數(shù)據(jù)的備份。
差異備份是針對完全備份:備份上一次的完全備份后發(fā)生變化的所有文件。差異備份過程中,只備份有標(biāo)記的那些選中的文件和文件夾。它不清除標(biāo)記,備份后不標(biāo)記為已備份文件,換言之,不清除存檔屬性。出于系統(tǒng)穩(wěn)定性的要求,對于空管信息化系統(tǒng)來說,該方式應(yīng)用較少,以符合安全保障要求。
與其他數(shù)據(jù)庫一樣,日志的備份在增量備份等數(shù)據(jù)庫日常維護中有很多實際意義。對數(shù)據(jù)庫發(fā)送的相關(guān)事務(wù)進行備份,可以備份自上一次備份以來的所有數(shù)據(jù)庫修改,這與差異備份有著根本性的區(qū)別。在空管信息化軟件中,大量需要日志備份,相關(guān)日志備份還將應(yīng)用于歷史數(shù)據(jù)的查詢以及相關(guān)不安全事件的調(diào)查。
由于采用備份工具備份的各種數(shù)據(jù)庫備份方式大同小異,因此以差異備份為例有如下步驟:而常用的步驟可以如下:首先,在“SQL Server 企業(yè)管理器”中使用sa 用戶名和口令注冊數(shù)據(jù)庫所在的服務(wù)器,否則以后執(zhí)行備份調(diào)度的時候,會出現(xiàn)權(quán)限不足,導(dǎo)致不能進行備份;其次,開啟服務(wù)器的調(diào)度代理SQL Server Agent 服務(wù);再之,在“SQL Server 企業(yè)管理器”中選中數(shù)據(jù)庫,指定一個新的文件backup.bak,選擇“完全”進行一次完全備份;最后,通過“備份數(shù)據(jù)庫”窗口,使用“差異備份”,“重寫”選項設(shè)置為“追加到媒體”,目的文件仍然是前面步驟所指定的backup.bak,并在“調(diào)度”選項中設(shè)置為每天的8:00(民航采用國際時間,即為UTC0:00),這樣,SQL Server 會在每天UTC 0:00 將數(shù)據(jù)庫自上次備份以來發(fā)生的變化,以增量備份的方式追加到backup.bak 文件中。
使用SQL Server 觸發(fā)器,同樣可以對SQL 數(shù)據(jù)庫進行備份。以實際工作為例,
首先,建立一個用于插入數(shù)據(jù)的測試數(shù)據(jù)表,命名為testATC,另外一個作為備份:testATC_bak
其次,編寫備份用的SQL Server 觸發(fā)器,只有更新或者是插入的時候才觸發(fā)
最后,測試測試表并跟蹤數(shù)據(jù)變化便可實現(xiàn)數(shù)據(jù)庫備份。這里不再贅述。
在實際工作中,可以通過分離數(shù)據(jù)庫工具或者命令將需要備份的數(shù)據(jù)庫從原SQL Server 中分離出來。再通過附加數(shù)據(jù)庫工具實現(xiàn)數(shù)據(jù)庫的備份。對于用存儲過程來分離數(shù)據(jù)庫,如果發(fā)現(xiàn)無法終止用戶鏈接,可以使用ALTER DATABASE 命令,并利用一個能夠中斷已存在鏈接的終止選項來把數(shù)據(jù)庫設(shè)置為SINGLE_USER 模式,設(shè)置為SIGLE_USER 代碼如下:
ALTER DATABASE [DatabaseName]SET SINGLE_USER WITH ROLLBACK IMMEDIATE 而分離數(shù)據(jù)庫的 CMD 命令?EXEC sp_detach_db DatabaseName。對于附加數(shù)據(jù)庫,可以使用sp_attach_db存儲過程,或者使用帶有FOR ATTACH 選項的CREATE DATABASE命令,在SQL Server2005 或更高的版本中推薦使用后者,前者是為了向前兼容,它正在逐漸淘汰,而后者更提供更多對文件的控制。
本文根據(jù)空管系統(tǒng)信息軟件日常維護探討了幾種SQL Server 數(shù)據(jù)庫備份的方法,從實際出發(fā)探討了包括常見數(shù)據(jù)庫備份方式方法、觸發(fā)器處理方法以及分離數(shù)據(jù)庫方法對于相關(guān)的SQL 數(shù)據(jù)庫系統(tǒng)提供一種維護思路,同時也希望能夠為相關(guān)其他空管信息化數(shù)據(jù)提供參考。
[1]Abraham Silberschatz,Henry F.Korth,S.Sudarshan DATABASE SYSTEM CONCEPTS(Fourth Edition)[M].高等教育出版社,McGraw-Hill Companies,2002.
[2]郭鄭州,陳軍紅.SQL Server 2008 完全學(xué)習(xí)手冊[M].北京:清華大學(xué)出版社,2011.
[3]閃四清.SQL Server2000 數(shù)據(jù)庫管理[M].北京:希望電子出版社,2002.