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