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