摘 要:結(jié)構(gòu)化查詢語言是現(xiàn)在流行使用的一種關(guān)系型數(shù)據(jù)庫管制體系。數(shù)據(jù)庫中最重要的當(dāng)然非數(shù)據(jù)莫屬,不過由于一些原因,例如磁盤損壞、電腦硬件破壞、顧客操縱方式不正確等,都可能破壞數(shù)據(jù)庫數(shù)據(jù)。為了確保在出現(xiàn)這些意外狀況的時(shí)候,能夠把損失降到最小化,數(shù)據(jù)庫管制工作者一定要常常把數(shù)據(jù)庫里面的數(shù)據(jù)進(jìn)行復(fù)制,進(jìn)而在出現(xiàn)問題的時(shí)候還能夠獲得原有的數(shù)據(jù)。文章以05版本的結(jié)構(gòu)化查詢語言為例,簡單講述了一下幾種數(shù)據(jù)庫怎樣備份復(fù)制以及恢復(fù)的方法。
關(guān)鍵詞:SQL 數(shù)據(jù)庫;數(shù)據(jù)災(zāi)難;數(shù)據(jù)庫恢復(fù)
1 SQL 數(shù)據(jù)庫備份
1.1 數(shù)據(jù)庫備份的類型
05版本的結(jié)構(gòu)化查詢語言中具有四種復(fù)制數(shù)據(jù)的途徑:完整復(fù)制、差異復(fù)制、事務(wù)日志復(fù)制還有文件、文件組復(fù)制。完整復(fù)制:復(fù)制數(shù)據(jù)庫中全部的內(nèi)容,包含事務(wù)日志。這種復(fù)制功能一般都需要占用很大的存儲空間用來復(fù)制原有文件內(nèi)容,進(jìn)行復(fù)制時(shí)花費(fèi)的時(shí)間也多,在恢復(fù)原文件時(shí),只需要恢復(fù)一個(gè)復(fù)制文件即可。差異復(fù)制:是在完成整個(gè)數(shù)據(jù)庫的數(shù)據(jù)之后,又發(fā)生了更改,需要在前一次整體的復(fù)制文件中,更改發(fā)生變化的數(shù)據(jù)。事務(wù)日志復(fù)制:事務(wù)日志復(fù)制就是把事務(wù)日志里面的內(nèi)容進(jìn)行復(fù)制。在事務(wù)日志詳細(xì)的登記了在第一次完整復(fù)制前后的全部過程。文件以及文件組復(fù)制:假如在建立數(shù)據(jù)庫時(shí),給數(shù)據(jù)庫建立了幾個(gè)數(shù)據(jù)庫文件夾或者文件時(shí),就能夠使用這種復(fù)制模式。
復(fù)制得到數(shù)據(jù)庫,要全面使用上面所說的這四種方式進(jìn)行綜合,使復(fù)制能夠在最短的時(shí)間內(nèi),占用最少的空間,復(fù)原簡便。數(shù)據(jù)庫能夠復(fù)制在磁盤以及磁帶中,假如復(fù)制在磁盤中,可以是文件的模式,也可以是復(fù)制設(shè)施的模式。不過不管是哪種模式,在磁盤中都是以文件的模式出現(xiàn)。數(shù)據(jù)庫的復(fù)制時(shí)數(shù)據(jù)庫管制工作人員最根本的工作。
1.2 備份數(shù)據(jù)庫應(yīng)該考慮的問題
①哪個(gè)時(shí)間段復(fù)制數(shù)據(jù)庫;②間隔多長時(shí)間進(jìn)行復(fù)制一次數(shù)據(jù)庫?一天中數(shù)據(jù)庫改變的內(nèi)容是多少?假如一天中只更改了十幾條數(shù)據(jù)庫內(nèi)容,卻進(jìn)行復(fù)制,這不是最佳復(fù)制時(shí)間;③使用哪種模式進(jìn)行復(fù)制?是每次都進(jìn)行完整復(fù)制模式,還是先完整復(fù)制之后在出現(xiàn)修改的情況下進(jìn)行差異復(fù)制方式;④把復(fù)制的數(shù)據(jù)存放在哪里,磁盤還是磁帶;⑤如果數(shù)據(jù)庫發(fā)生丟失或者損壞,復(fù)原原有數(shù)據(jù)需要多久?復(fù)原的數(shù)據(jù)是不是最新的?怎樣復(fù)制數(shù)據(jù)庫,主要是根據(jù)數(shù)據(jù)庫每天的更改情況還有能夠承受的誤差范疇內(nèi)決定的。
2 恢復(fù)模式
2.1 完整恢復(fù)模式
在這種復(fù)原形式下,05版本的結(jié)構(gòu)化查詢語言能夠全面詳細(xì)的記錄出每一次更改數(shù)據(jù)庫的內(nèi)容。一般來講,對數(shù)據(jù)要求比較嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫運(yùn)用這種復(fù)原形式的,例如銀行、郵電等單位的數(shù)據(jù)庫體系,每一種事務(wù)日志都是不能缺少的。這種復(fù)原模式也是05版本的結(jié)構(gòu)化查詢語言中默認(rèn)的復(fù)原形式。進(jìn)行完整復(fù)原形式能夠把全部的數(shù)據(jù)庫內(nèi)容復(fù)原到設(shè)定的時(shí)間段內(nèi)。這個(gè)時(shí)間段可以按照需要自行設(shè)定。在這種形勢下要按時(shí)進(jìn)行事務(wù)日志復(fù)制,要不然復(fù)原的文件得不到最佳的效果。
2.2 大容量日志恢復(fù)模式
這種復(fù)原形式是對完整復(fù)原形式的填充。在這種復(fù)原形式下,只是對大容量進(jìn)行操作,就像導(dǎo)入數(shù)據(jù)等開展最小的登記,在確保大容量操縱不會受到媒體事故的損害下,能夠保存最完整卻占用最小的空間。如,在數(shù)據(jù)庫中加入十萬條的數(shù)據(jù)時(shí),在完整復(fù)原的形勢下,每一個(gè)加入的操作日志都會進(jìn)行登記,這樣日志占量就會很大。在大容量日志復(fù)原形式下,只登記一些關(guān)鍵的記錄,不會全部的都登記,這樣,就能夠很大的提升數(shù)據(jù)功能,不過因?yàn)槿罩静蝗?,假如發(fā)生故障,那么數(shù)據(jù)就有可能不能復(fù)原。所以,大多只是在要開展大規(guī)模數(shù)據(jù)操縱時(shí)才把復(fù)原形式更改成大容量日志復(fù)原形式,把數(shù)據(jù)整理好復(fù)制之后,再立即更改成完整復(fù)原形式。
2.3 簡單恢復(fù)模式
在這種形式下,數(shù)據(jù)庫會自動清理一些沒有發(fā)生變化的日志。能夠使復(fù)制的還原變得簡便,不過由于沒有事務(wù)日志復(fù)制,因此不能夠復(fù)原到失敗的時(shí)間段。一般這種形式在對數(shù)據(jù)庫要求不嚴(yán)格的數(shù)據(jù)庫中運(yùn)用。在這種形式下只能夠使用完整復(fù)制以及差異復(fù)制。
在 SQL 的對象資源管理器窗口中就可以完成數(shù)據(jù)庫的備份和還原的操作。
3 SQL 數(shù)據(jù)庫的恢復(fù)技巧
3.1 在 SQL Server Management Studio 里還原數(shù)據(jù)的方法
啟動【SQL Server Management Studio】,右擊要還原的數(shù)據(jù)庫,在彈出的快捷菜單里選擇【任務(wù)】à【還原】à【數(shù)據(jù)庫】,【彈出】對話框選擇【還原數(shù)據(jù)庫】對話框 SQL Server 2005 在【選擇用于還原的備份集】區(qū)域里進(jìn)行了完善工作, 可以一次性選擇多個(gè)備份集來還原數(shù)據(jù)庫,SQL Server 2005 會自動按次序還原這些備份。 如果順利的話,數(shù)據(jù)庫就還原成功了。
3.2 用 T-SQL 語言還原數(shù)據(jù)庫
T-SQL 語言里提供了 RESTORE DATABASE 語句來恢復(fù)數(shù)據(jù)庫備份,用該語句可以恢復(fù)完整備份、差異備份、文件和文件組備份。如果要還原事務(wù)日志備份則還可以用RESTORE LOG語句。
雖然RESTORE DATABASE 語句可以恢復(fù)完整備份、差異備份、文件和文件組備份,下面簡單的介紹還原完全備份的方法,其它方法可以參考進(jìn)行。
例如:用名為“Northwind 備份”的備份設(shè)備來還原 Northwind 數(shù)據(jù)庫,其代碼如下:
USE master
RESTORE DATABASE Northwind
FROM Northwind 備份
3.3 無日志文件的恢復(fù)技巧
有時(shí)候備份數(shù)據(jù)庫的時(shí)候, 丟失或損壞了數(shù)據(jù)庫的日志文件,導(dǎo)致在附加恢復(fù)數(shù)據(jù)庫的時(shí)候質(zhì)疑出錯(cuò), 我們可以采用下面的辦法,使得數(shù)據(jù)庫恢復(fù)成功。例:被置疑的數(shù)據(jù)庫是 sp_detach_db 和附加數(shù)據(jù)庫是 sp_attach_sin-gle_file_db。大致的步驟是:
①創(chuàng)建一個(gè)新的名稱一樣的數(shù)據(jù)庫。②之后關(guān)閉結(jié)構(gòu)化查詢語言。③之后使用原來數(shù)據(jù)庫中的內(nèi)容填充新創(chuàng)建的這個(gè)數(shù)據(jù)庫。④重新開啟結(jié)構(gòu)化查詢語言。⑤這種情況下開啟單位管制設(shè)備會有沖突的現(xiàn)象存在,先忽略掉,實(shí)施下面的語言。⑥結(jié)束后差不多就能夠查詢數(shù)據(jù)庫中的內(nèi)容了,不過這種情況下,數(shù)據(jù)庫自身還有一些待解決的問題,處理方法是:使用數(shù)據(jù)庫的.sql結(jié)尾的方式重新建立一個(gè)文件,把數(shù)據(jù)導(dǎo)入即可。
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH
OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768
WHERE
NAME=' 置疑的數(shù)據(jù)庫名
Go
sp_dboption ' 置疑的數(shù)據(jù)庫名 ', 'single user', 'true'
Go
DBCC CHECKDB(' 置疑的數(shù)據(jù)庫名 ')
Go
update sysdatabases set status =28 where name=' 置疑的數(shù)據(jù)庫名 '
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption ' 置疑的數(shù)據(jù)庫名, 'single user', '1'
Go 數(shù)據(jù)庫就恢復(fù)成功了。
3.4 建立自動備份的維護(hù)計(jì)劃
我們都清楚,數(shù)據(jù)庫復(fù)制是很重要的一個(gè)事項(xiàng),所以作為數(shù)據(jù)庫管制者必然要使用很多的時(shí)間去給數(shù)據(jù)庫進(jìn)行復(fù)制。如果一個(gè)數(shù)據(jù)庫里面的內(nèi)容更改的次數(shù)較多時(shí),一天進(jìn)行數(shù)次復(fù)制不可或缺的,假如每次復(fù)制都要由數(shù)據(jù)庫管制人員手工進(jìn)行操作,那么這必然是一項(xiàng)繁重的任務(wù)。SQL Server 2005 中可以使用維護(hù)計(jì)劃來為數(shù)據(jù)庫自動備份,減少數(shù)據(jù)庫管理員的工作負(fù)擔(dān)。 其使用方法如下:啟動【SQL Server Management Studio】,在【對象資源管理器】窗口里選擇【數(shù)據(jù)庫實(shí)例】à【管理】à【維護(hù)計(jì)劃】選項(xiàng)中進(jìn)行。
4 結(jié)束語
作為一個(gè)數(shù)據(jù)庫數(shù)據(jù)管制的工作人員,為了避免數(shù)據(jù)庫中的數(shù)據(jù)丟失造成的損失,一定要經(jīng)常對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行復(fù)制備份,可以把數(shù)據(jù)庫中的數(shù)據(jù)復(fù)制在磁盤以及磁帶中,假如出現(xiàn)數(shù)據(jù)庫數(shù)據(jù)丟失或者受損的情況,能夠從復(fù)制的磁盤或磁帶中恢復(fù)數(shù)據(jù)。
復(fù)制數(shù)據(jù)庫中的數(shù)據(jù)要全面運(yùn)用到這幾種方式進(jìn)行綜合。使復(fù)制能夠在最短的時(shí)間內(nèi),占用最少的空間,復(fù)原簡便。復(fù)制的數(shù)據(jù)庫要放置好。復(fù)制的設(shè)施最好不要和原數(shù)據(jù)庫體系存放在一臺電腦中,放置因?yàn)殡娔X硬件出現(xiàn)損壞時(shí),復(fù)制的數(shù)據(jù)也受到影響。如果有條件的話,可以把復(fù)制的數(shù)據(jù)設(shè)施刻錄在光盤中。運(yùn)用維修保護(hù)策劃能夠把數(shù)據(jù)庫管制工作者從繁瑣重要的復(fù)制作業(yè)中解脫出來,提升數(shù)據(jù)庫的管制效果。
參考文獻(xiàn)
[1]劉少偉.企業(yè)信息系統(tǒng)數(shù)據(jù)安全性分析[J].商業(yè)經(jīng)濟(jì),2009(2).