版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
一、數(shù)據(jù)庫存儲概述1、數(shù)據(jù)文件類型Primarydatafiles:每個(gè)數(shù)據(jù)庫都有一個(gè)單獨(dú)的主要數(shù)據(jù)文件,默認(rèn)以.mdf擴(kuò)展名。主要數(shù)據(jù)文件不僅包含數(shù)據(jù)信息,還包含與該數(shù)據(jù)庫結(jié)構(gòu)相關(guān)的信息。創(chuàng)建數(shù)據(jù)庫時(shí),數(shù)據(jù)庫結(jié)構(gòu)相關(guān)信息不僅存在于master數(shù)據(jù)庫中,同時(shí)還包含在primarydatafile上.Secondarydatafiles一個(gè)數(shù)據(jù)庫可以有一個(gè)或者多個(gè)二級數(shù)據(jù)文件,默認(rèn)以.ndf為擴(kuò)展名。一般來說二級數(shù)據(jù)文件并不是必須的,因?yàn)槎墧?shù)據(jù)文件不包含文件位置等信息。Transactionlogs:數(shù)據(jù)庫必須至少有一個(gè)事務(wù)日志文件,默認(rèn)以.ldf為擴(kuò)展名。日志是整個(gè)數(shù)據(jù)庫的命脈,事務(wù)日志不可讀的話,將無法對數(shù)據(jù)庫進(jìn)行任何操作。當(dāng)你在數(shù)據(jù)庫上進(jìn)行數(shù)據(jù)操作時(shí),數(shù)據(jù)并不是直接寫入數(shù)據(jù)文件,而是先將相關(guān)操作信息寫入事務(wù)日志文件。當(dāng)一個(gè)事務(wù)結(jié)束時(shí),該事務(wù)被標(biāo)記為已提交,但這也并不 意味著數(shù)據(jù)從日志文件寫入了數(shù)據(jù)文件中。一個(gè)標(biāo)記為已提交的事務(wù)僅僅意味著所有與該事務(wù)相關(guān)的元素已經(jīng)成功完成。Thebuffercachemaybeupdated,butnotnecessarilythedatafile.檢查點(diǎn)(checkpoint)會周期性的發(fā)生。檢查點(diǎn)發(fā)生時(shí),是確認(rèn)所有已提交的事務(wù),不管是在buffercache或者事務(wù)日志中,都被寫入相關(guān)的數(shù)據(jù)文件中。檢查點(diǎn)(checkpoint)可以通過以下方式來觸發(fā):1、 顯示調(diào)用checkpoint命令;2、RecoverInterval實(shí)例設(shè)置的周期達(dá)到(用來標(biāo)識多久發(fā)生一次checkpoint)3、 做了數(shù)據(jù)庫備份(在簡單模式下);4、 數(shù)據(jù)庫文件結(jié)構(gòu)被改變(在簡單模式下);
5、數(shù)據(jù)庫引擎被結(jié)束。一般來說,寫數(shù)據(jù)的過程是由系統(tǒng)自動完成的,如下圖所示,但數(shù)據(jù)并不是直接寫入.mdf或者.ndf文件中,而是先將有關(guān)變化寫入事務(wù)日志中,這也是數(shù)據(jù)庫中的write-ahead機(jī)制。用戶執(zhí)行insert,update,delete等語句;數(shù)據(jù)立即被寫入內(nèi)部日志緩存中(internallogcache)日志緩存會更新物理事務(wù)日志文件,同時(shí)將在buffercache上執(zhí)行相關(guān)變化數(shù)據(jù)緩存(databuffer)清除所有在緩存上的臟數(shù)據(jù),數(shù)據(jù)文件被更新。1、恢復(fù)模式類型所有的數(shù)據(jù)庫都可以設(shè)置為三個(gè)不同的恢復(fù)模式:簡單(simple),完全(full),大容量日志(Bulk-Logged).A完全恢復(fù)模式完全恢復(fù)模式是默認(rèn)的恢復(fù)模式。在完全恢復(fù)模式下,需要手工的對事務(wù)日志進(jìn)行管理。使用完全恢復(fù)模式的優(yōu)點(diǎn)是可以恢復(fù)到數(shù)據(jù)庫失敗或者指定的時(shí)間點(diǎn)上。缺點(diǎn)則是,如果沒有進(jìn)行管理的話,事務(wù)日志將會快速增長,消耗磁盤空間。要清除事務(wù)日志,只能通過備份事務(wù)日志,或者切換至簡單模式。CommitCheckpointtInFullRecoverymode,thetransactionlog
corrtinuestogrow,regardlessofthe
Mcurrenceofcommitsarcheckpoints,如上圖所示,在完全恢復(fù)模式下,事務(wù)日志會持續(xù)增長,而不管checkpoint的發(fā)生。B簡單恢復(fù)模式與完全恢復(fù)模式不同的是,在簡單恢復(fù)模式下,在檢查點(diǎn)發(fā)生時(shí)(checkpoint),當(dāng)前已被提交的事務(wù)日志將會被清除。CommitCheckpointWhenacheckpointoccurs,allcommittedtransactionsaretrubcatedfromthelog.如上圖所示,在檢查點(diǎn)發(fā)生時(shí),所有已提交的事務(wù)日志信息將會從事務(wù)日志里面刪除。因此,在簡單恢復(fù)模式下,容易造成數(shù)據(jù)丟失,因?yàn)闊o法將數(shù)據(jù)庫恢復(fù)到失敗的那一刻。需要注意的是,雖然在簡單恢復(fù)模式下,系統(tǒng)會自動定期清除日志,但這并不意味著事務(wù)日志文件不會增長。例如,如果執(zhí)行一個(gè)批量插入操作時(shí),SQLSERVER會將該相關(guān)操作當(dāng)成一個(gè)事務(wù),期間產(chǎn)生的日志量在極端情況下,還是非??捎^的。C大容量日志恢復(fù)模式大容量日志恢復(fù)模式與完全恢復(fù)模式非常相似,但與完全恢復(fù)模式不同的是,批量操作將會盡量被最少記錄。批量操作有以下幾種類型:批量導(dǎo)入數(shù)據(jù),例如使用BCP(BulkCopyImport),BULKINSERT命令,或者是在BULK使用OPENROWSET命令;大對象操作(LOB),例如在TEXT,NTEXT,IMAGE列上使用WRITETEXT或者UPDATETEXT;SELECTINTO字句;CREATEINDEX,ALTERINDEX,ALTERINDEXREBUILD,DBCCREINDEX在完全恢復(fù)模式下,上述操作產(chǎn)生的日志將會是非常大的。而使用大容量日志恢復(fù)模式將會阻止不需要或者非預(yù)期的日志增長。在批量操作發(fā)生時(shí),SQLSERVER僅僅記錄了相關(guān)數(shù)據(jù)頁(datapage)的ID,在SQLSERVER中,SQLSERVERpages都有內(nèi)部ID,如5:547。用這種方式,能夠?qū)⒋罅康膒ageID記錄在小的日志文件里。Bulk-LoggedActionInBulk-LoggedRecoverymode,forany
bulk-loggedaction(BCP.EXE,forexample),
thelocations01thedaMpagesare
recorded,nottheindividualinserts,
updates,ordeletes.使用大容量日志恢復(fù)模式,將會使數(shù)據(jù)倉庫或者有大批量操作的數(shù)據(jù)庫減少很大的空間。但使用大容量恢復(fù)模式時(shí),會使得恢復(fù)變得比較困難,一般來說,只能恢復(fù)到最后的事務(wù)日志備份點(diǎn)上,但如果所有的事務(wù)日志都被備份后,還是可以恢復(fù)成功的。只要在必要時(shí)才使用大容量恢復(fù)模式,而且使用完成后,還需切換至完全恢復(fù)模式,同時(shí)進(jìn)行備份。2、改變恢復(fù)模式改變數(shù)據(jù)庫的恢復(fù)模式,可以通過以下語句來實(shí)現(xiàn):ALTERDATABASEdatabasenameSETRECOVEYBULKLOGGED也可以通過GUI界面來修改。改變恢復(fù)模式并不需要重啟數(shù)據(jù)庫實(shí)例。二、數(shù)據(jù)庫備份介紹1、備份位置在SQLServer上,有多種備份位置可以選擇,如本地磁盤,網(wǎng)絡(luò)磁盤,遠(yuǎn)程地址,磁帶等。各種備份位置均有自己的優(yōu)點(diǎn)和缺點(diǎn)。2、邏輯備份設(shè)備在SQLServer上,可以通過創(chuàng)建邏輯備份設(shè)備來完成備份。使用邏輯備份設(shè)備的好處是,當(dāng)變更備份地址時(shí),不需要更改備份腳本,只需要更改邏輯備份設(shè)備的定義即可。創(chuàng)建邏輯備份設(shè)備的腳本如下:SQLcodeEXECsp_adddumpdevice@devtype=’disk’,@logicalname=’MYBackup’,@physicalname=’D:\backup\mydb.bak’刪除備份設(shè)備的腳本:SQLcodeSp_dropdevice@logicalname=’MYBackup’上述腳本只是刪除邏輯備份設(shè)備的定義,下述腳本將同時(shí)刪除備份文件:SQLcodeSp_dropdevice@logicalname=’MYBackup’,@devfile=’DELFILE’使用邏輯備份設(shè)備的方法如下:SQLcodeBackupdatabasemydbtoMYBackup當(dāng)然,還可在邏輯備份設(shè)備上指定過期時(shí)間等備份屬性,如:SQLcodeBackupdatabasemydbtoMYBackupWITHEXPIREDATE=’13/01/2010’或:.SQLcodeBACKUPDATABASEmydbtoMYBackupWITHRETAINDAYS=73、備份集與存儲集每一份備份包含于一個(gè)備份集,而一個(gè)備份集包含于一個(gè)存儲集。通過系統(tǒng)GUI進(jìn)行備份時(shí),SQLServer會自動指定備份集和存儲集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:SQLcodeBACKUPDATABASEmydbtoMYBackupWITHRETAINDAYS=7,NAME=’FULL’,MEDIANAME=’ALLBackups’NAMES是指備份集名稱,MEDIANAME是指存儲集名稱。4、全備份不管恢復(fù)模式是哪一個(gè),所有的備份都必須要有一個(gè)全備份,特別是日志備份和差異備份,如果沒有全備份的話,將無法進(jìn)行恢復(fù)。簡單的全備份腳本如下所示,也可以通過維護(hù)計(jì)劃來指定全備份:SQLcodeBACKUPDATABASEmydbtoDISK=’D:\Backup\mydb.bak’但需要注意的是,上述命令是將數(shù)據(jù)庫備份附加到當(dāng)前的存在的文件上,如果不存在則創(chuàng)建它,并不會覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數(shù)。SQLcodeBACKUPDATABASEmydbtoDISK=’D:\Backup\mydb.bak’WITHINIT5、日志備份在完全恢復(fù)模式或者大容量日志恢復(fù)模式下,日志備份不僅僅是恢復(fù)的需要,同時(shí)也是手工管理事務(wù)日志文件的一種方式。如果從不進(jìn)行備份的話,在完全恢復(fù)模式或者大容量恢復(fù)模式下,事務(wù)日志將會持續(xù)增長,直至消耗完所在磁盤。日志備份的腳本如下:SQLcodeBACKUPLOGmydb_logTODISK=’D:\backup\mydb.trn’需要養(yǎng)成使用.trn為日志備份的擴(kuò)展名的習(xí)慣。每個(gè)在數(shù)據(jù)庫上的動作都會被安排一個(gè)LogSequenceNumber(LSN)。如果需要還原到指定的時(shí)間點(diǎn),需要有持續(xù)的LSN記錄。也就是說,在完全恢復(fù)模式或者大容量日志模式下,一個(gè)不被打斷的事務(wù)日志備份鏈?zhǔn)腔謴?fù)數(shù)據(jù)庫的基本要求。6、差異備份使用日志備份來恢復(fù)時(shí),無疑是一個(gè)很慢的過程,特別是上一個(gè)全備份的歷史比較悠久時(shí)。使用差異備份,便能縮短恢復(fù)時(shí)間。事實(shí)上,差異備份只是BACKUPDATABASE的一個(gè)選項(xiàng),如下:SQLcodeBACKUPDATABASEmydbTODISK=’D:\backup\mydb.dif’WITHDIFFERENTIAL,INIT進(jìn)行數(shù)據(jù)庫恢復(fù)時(shí),先恢復(fù)數(shù)據(jù)庫全備份,再恢復(fù)數(shù)據(jù)庫差異備份,最后才恢復(fù)日志備份。差異備份是與上一次全備份緊密相連的,不管期間有多少次日志備份和差異備份,差異備份還庫上需要臨時(shí)使用數(shù)是會從上一次全備開始備份。因此,經(jīng)常會遇到這樣的一種情況,在生產(chǎn)庫上需要臨時(shí)使用數(shù)據(jù)庫時(shí),便用BACKUPDATABASE…TODISK=’..’進(jìn)行了一個(gè)備份,下一次的差異備份便會以這回的全備為準(zhǔn),如果過后把這個(gè)臨時(shí)全備刪除掉后,后面的差異備份就沒用了。差異備份并不意味著磁盤空間肯定會少,這取決于實(shí)際情況。當(dāng)期間大量操作發(fā)生時(shí),差異備份還是會變得很大。7、錯(cuò)誤檢測在備份過程中,備份進(jìn)程會同時(shí)驗(yàn)證數(shù)據(jù),或者校驗(yàn)不完整頁(tornpage),或者驗(yàn)證校驗(yàn)和(checksum)。要使用該功能,需要激活該選項(xiàng)。不完整頁檢測(Torndection)僅僅檢查每一個(gè)頁看是否已經(jīng)寫完成。如果發(fā)現(xiàn)一個(gè)頁只有部分被寫入,那么就將其標(biāo)記為torn。校驗(yàn)和驗(yàn)證(checksumvalidation)是一種新的頁驗(yàn)證機(jī)制。它會為每個(gè)頁添加一個(gè)值來表明該頁實(shí)際的大小。雖然看起來是個(gè)代價(jià)很高影響性能的操作,但事實(shí)上,它的效率非常高,與torn差不多。備份進(jìn)程在備份數(shù)據(jù)庫時(shí),會通過比較在數(shù)據(jù)庫里的和隨著備份頁寫入硬盤時(shí)這兩個(gè)之間的值來進(jìn)行驗(yàn)證。但是,這個(gè)驗(yàn)證并不是自動完成的,需要顯示指定,在GUI頁面上是個(gè)選項(xiàng)。如果通過T-SQL來備份的話,語句如下:SQLcodeBACKUPDATABASEmydbTODISK=’D:\data\mydb.bak’WITHCHECKSUM如果備份過程中,發(fā)現(xiàn)了錯(cuò)誤,SQLServer會錯(cuò)誤信息寫入MSDB上的SUSPECT_PAGE表里面。同時(shí),在默認(rèn)情況下,備份行為會停止的(STOP_ON_ERROR),以便管理員排查錯(cuò)誤。但備份過程中的校驗(yàn)和驗(yàn)證還有另外一個(gè)選項(xiàng)(CONTINUE_ON_ERROR),也就是說,如果發(fā)現(xiàn)錯(cuò)誤,備份過程并不會中斷,而是將錯(cuò)誤頁信息記錄在MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多只能達(dá)到1000行,如果達(dá)到了的話,備份同樣會失敗。激活校驗(yàn)和驗(yàn)證的話,很明顯會影響備份的性能。但還是很有必要的。8、安全備份完全備份和日志備份語句還支持使用密碼屬性,如:SQLcodeBACKUPDATABASEmydbTODISK=’D:\mydb.bak’WITHPASSWORD=’mydb’所指定的密碼是很容易破解的。因此,如果確實(shí)需要對某些備份數(shù)據(jù)進(jìn)行加密的話,可以將備份存放于加密的文件系統(tǒng)或者其它安全的存儲設(shè)備上。同時(shí),SQLServer還提供了對真實(shí)列進(jìn)行加密的功能。該加密功能是工業(yè)標(biāo)準(zhǔn)。9、條帶備份有些情況下,單獨(dú)一個(gè)硬盤無法存儲一個(gè)完整的數(shù)據(jù)庫備份時(shí),可以將數(shù)據(jù)庫備份分成多個(gè)部分存儲在不同的磁盤上,這種備份方式成為條帶備份。使用條帶備份的優(yōu)點(diǎn)很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個(gè)備份將無效。其語句如下:SQLcodeBACKUPDATABASEmydbTODISK=’D:\mydb.bak’,DISK=’E:\mydb.bak’WITHINIT,CHECKSUM,CONTINUE_ON_ERROR上述D盤和E盤上的備份是不可分割的。10、鏡像備份與條帶備份在多個(gè)磁盤上保留同一份備份不同的是,鏡像備份是在不同磁盤上保留多份備份。其語句如下:SQLcodeBACKUPDATABASEmydbTODISK=’D:\mydb.bak’MIRRORTODISK=’E:\mydb.bak’WITHINIT,CHECKSUM,CONTINUE_ON_ERROR在實(shí)際情況下,對日志備份采取鏡像備份方式會比較合適。11、COPY-ONLY備份在差異備份里曾提到過,差異備份是建立在上一個(gè)全備份的基礎(chǔ)上的。因此如果在一個(gè)事先安排好的備份計(jì)劃里,如果在全備份和差異備份之間再進(jìn)行了一次全備份后,其差異備份會被打斷,如果把臨時(shí)全備份刪除掉后,就產(chǎn)生了數(shù)據(jù)丟失。在SQLSERVER2005以后,SQLSERVER提供了一個(gè)選項(xiàng)copy-only.使用copy-only選項(xiàng)進(jìn)行的全備份便不會打算原先的備份計(jì)劃,語句如下:SQLcodeBACKUPDATABASEmydbTODISK=’D:\mydb.bak’WITHINIT,CHECKSUM,COPY_ONLY三、文件和文件組備份在SQLSERVER7.0以后,SQLServer提供了filegroup的概念。文件組不僅僅提供了一個(gè)邏輯的存儲地址,還允許將不同的表和索引放在不同的文件組上來提高性能和減少備份時(shí)間。在數(shù)據(jù)存儲概述上,提到了數(shù)據(jù)庫有三類數(shù)據(jù)文件,一般來說,數(shù)據(jù)庫至少需要兩個(gè)(.mdf和.ldf)或者更多的文件。SQLServer不僅允許有多個(gè)文件存在(.ldf),還允許多個(gè)文件組存在。一個(gè)文件組可以有多個(gè)文件,每個(gè)文件需要仔細(xì)規(guī)劃好初始大小及增量。1、默認(rèn)文件組在創(chuàng)建對象時(shí),如果未明確指定文件組,那么該對象將會存放在默認(rèn)的文件組上。在默認(rèn)情況下,默認(rèn)的文件組是primary,但由于primary文件組不僅可以包含用戶數(shù)據(jù),同時(shí)還存儲著數(shù)據(jù)庫結(jié)構(gòu)等技術(shù)信息,因此一般建議添加額外的一個(gè)文件組,并將其指定為默認(rèn)文件組。SQLServer只能有一個(gè)默認(rèn)的文件組。修改默認(rèn)文件組的語句如下:SQLcodeALTERDATABASEmydbMODIFYFILEGROUPmydbDEFAULT;2、為對象指定文件組當(dāng)創(chuàng)建表或者索引時(shí),不管是用戶還是系統(tǒng)都需要將表或索引放在某個(gè)文件組上。如果在創(chuàng)建表或索引時(shí)指定文件組,那么表或索引將會存儲在指定的文件組上,而不是默認(rèn)的文件組。其指定語句如下:SQLcodeCREATETABLEtest([id]int,[notes]text)onmydbdata也可以通過GUI創(chuàng)建表的頁面來指定文件組。3、將對象遷移至指定文件組如果需要變更對象的存儲位置,最簡單的方式則是通過GUI屬性頁面來進(jìn)行修改通過該方法,可以直觀的看到對象的遷移過程。同時(shí)也可以通過T-SQL來修改,例如:SQLcodeALTERTABLEtestdropconstraintPK_testWITH(MOVETODATA)4、備份數(shù)據(jù)文件備份數(shù)據(jù)文件同樣可以通過BACKUPDATABASE語句來實(shí)現(xiàn)。如下:SQLcode上述語句相當(dāng)于數(shù)據(jù)文件級別的全備份,與數(shù)據(jù)庫級別的備份類似,文件級別上的備份也有差異備份,當(dāng)然前提是要有相對應(yīng)的文件全備份。BACKUPDATABASEmydbFILEBACKUPDATABASEmydbFILE=D:\Data\mydb.ndf’TO差異備份的語句如下:SQLcodeBACKUPDATABASEmydbFILE=’D:\Data\mydb.ndf’WITHDIFFERENTIALTODISK=’E:\Backup\mydbdata_dif.bak’5、備份文件組與單獨(dú)備份文件類似,也可以對文件組進(jìn)行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。T-SQL的語句如下:SQLcodeBACKUPDATABASEmydbFILEGROUP=’PRIMARY?TO6、不完全備份(partialbackup)在文件組備份上,不完全備份其實(shí)相當(dāng)于完全備份,可以通過指定關(guān)鍵字READ_WRITE_FILEGROUPS來實(shí)現(xiàn)不完全備份。語句如下:SQLcodeBACKUPDATABASEmydbREAD_WRITE_FILEGROUPSTODISK=’D:\mydb.bak’那不完全備份到底是什么意思呢?什么時(shí)候需要不完全備份?如果對一個(gè)文件組設(shè)置了只讀,而這只讀的文件組又需要進(jìn)行一次備份,這時(shí),可以不用BACKUPDATABASE語句進(jìn)行備份,只需要挑個(gè)時(shí)間停止實(shí)例,然后執(zhí)行不完全備份。四、數(shù)據(jù)恢復(fù)1、Restorevs.RecoveryRestore和Recovery是兩個(gè)不同的概念,但在數(shù)據(jù)恢復(fù)過程中又是緊密聯(lián)系的。Restore相當(dāng)于從備份集中重建整個(gè)或者部分?jǐn)?shù)據(jù)庫,Restore是無法改變數(shù)據(jù)庫狀態(tài)的,如脫機(jī)和聯(lián)機(jī)等。Recovery則是將數(shù)據(jù)庫從脫機(jī)狀態(tài)恢復(fù)到聯(lián)機(jī)狀態(tài)中供用戶使用。Recovery在SQLServer啟動時(shí)也會發(fā)生,在數(shù)據(jù)庫啟動過程中,SQLServer會檢查事務(wù)日志,看是否存在已提交或未提交的事務(wù),如果發(fā)現(xiàn)在最后一次檢查點(diǎn)發(fā)生后,還有已提交的事務(wù),則SQLServer會對這些事務(wù)進(jìn)行REDO(ROLLFORWARD);而如果發(fā)現(xiàn)未提交的事務(wù),則進(jìn)行UNDO(ROLLBACK)o一旦對數(shù)據(jù)庫進(jìn)行了Recovery,則將無法再進(jìn)行Restore操作。Recovery事實(shí)上是Restore的一個(gè)選項(xiàng),默認(rèn)情況下,進(jìn)行Restore操作時(shí),SQLServer還會進(jìn)行Recovery操作。在單獨(dú)對全備份進(jìn)行恢復(fù)時(shí),可以不用考慮Recovery,但如果后續(xù)仍有日志備份或差異備份需要恢復(fù),則必須注意Recovery選項(xiàng)的選擇。數(shù)據(jù)庫恢復(fù)的語句如下:SQLcodeRESTOREDATABASEmydbFROMmydbdeviceWITHRECOVERY顯示指定RECOVERY或者NORECOVERY是個(gè)良好的習(xí)慣。2、在RECOVERY過程中的可用性一般情況下,如果SQLServer處于Recovery過程中時(shí),用戶是無法使用數(shù)據(jù)庫的。但可以通過設(shè)置fastrecovery使得用戶在Recovery中使用數(shù)據(jù)庫。在所有已提交的事務(wù)都被ROLLFORWARD后,數(shù)據(jù)庫就是聯(lián)機(jī)狀態(tài)。一般情況下,SQLServer強(qiáng)制已提交的事務(wù)寫入數(shù)據(jù)庫中,這個(gè)過程叫做檢查點(diǎn)(CHECKPOINT)可以通過強(qiáng)制使用CHECKPOINT命令來觸發(fā),默認(rèn)則是以RECOVERYINTERVAL為周期,可以通過SP_CONFIGURE命令來設(shè)置RECOVERYINTERVALoSQLcodesp_configure'ShowAdvancedOptions',1sp_configure'recoveryinterval',5RECONFIGUREWITHOVERRIDEsp_configure'ShowAdvancedOptions',0默認(rèn)情況下,RECOVERYINTERVAL設(shè)置為0,表示SQLServer根據(jù)需要?jiǎng)討B(tài)管理CHECKPOINT的發(fā)生。3、備份文件里面的信息在primary文件里,存儲著與數(shù)據(jù)庫結(jié)構(gòu)有關(guān)的一些信息,如文件位置等。因此備份后,這些信息同樣保留在備份文件里面。如果要恢復(fù)到不同的磁盤上或服務(wù)器后,需要進(jìn)行額外的更改。在SQLServer里,提供了RESTOREHEADERONLY,RESTOREFILELISTONLY,RESTORELABELONLY,RESTOREVERIFYONLY等命令來讀取備份文件的信息。也可以通過MSDB里的表來獲取備份集的相關(guān)信息。RESTOREHEADERONLYFROMDISK:'D:\family_20100108.bak'各字段的含義可以查看聯(lián)機(jī)叢書。RESOTREFILELISTONLYSQLcodeRESTOREFILELISTONLYFROMDISK:'D:\family_20100108.bak'RESOTRELABELONLYSQLcodeRESTORELABELONLYFROMDISK:'D:\family_20100108.bak'RESOTOREVERIFYONLYSQLcodeRESTOREVERIFYONLYFROMDISK='D:\family_20100108.bak'4、從全備份中恢復(fù)不管是在簡單恢復(fù)模式或者完全恢復(fù)模式下和大容量日志模式下,對全備份恢復(fù)都是差不多的。最大的差別在于完全恢復(fù)模式與大容量日志恢復(fù)模式,除了需要恢復(fù)全備份外,還需要指定WITHNORECOVERY,以便后續(xù)的差異備份和日志備份的恢復(fù)。當(dāng)然,在簡單恢復(fù)模式下,也是有差異備份的,這種情況下,同樣需要指定WITHNORECOVERY。需要注意的是,在做恢復(fù)之前,應(yīng)該養(yǎng)成對當(dāng)前日志進(jìn)行備份的習(xí)慣,否則容易造成數(shù)據(jù)丟失。SQLServer雖然提供REPLACE選項(xiàng)以便強(qiáng)制恢復(fù),但這樣子末尾日志就丟掉了。通常,如果未對當(dāng)前日志進(jìn)行備份,那么會收到如下錯(cuò)誤上述錯(cuò)誤,提到了使用WITHREPLACE或者WITHSTOPAT命令來完成恢復(fù),但應(yīng)盡量避免使用這兩個(gè)命令。如果要將數(shù)據(jù)庫恢復(fù)到不同的磁盤上,可以通過GUI頁面指定,也可以通過T-SQL語句來實(shí)現(xiàn)。T-SQL實(shí)現(xiàn)的方式如下:SQLcodeRESTOREDATABASEFamilyFROMDISK='D:\family_20100108.bak'WITHMOVE'Family'TO'D:\Family.mdf,MOVE'Family_Log'TO'D:\Family.ldf'WITHRECOVERY5、恢復(fù)到指定的時(shí)間點(diǎn)要恢復(fù)到指定的時(shí)間點(diǎn)有三種選擇,一種是通過明確指定時(shí)間,一種通過指定LSN號,另外一種則是通過創(chuàng)建和指定logmarks。TIME通常情況下,恢復(fù)都會有要求恢復(fù)到指定時(shí)間點(diǎn)的要求,可通過GUI界面來實(shí)現(xiàn),也可以通過T-SQL來實(shí)現(xiàn)FROMDISK='D:\family_20100108.bak'WITHNORECOVERYRESTORELOGFamilyFROMDISK='D:\family_20100108.trn'WITHRECOVERY,STOPAT'jan8,20093:10pm'LSN如果知道確切的LSN號,RESOTREHEADERONLYSQLcode也可以通過LSN如果知道確切的LSN號,RESOTREHEADERONLYSQLcode也可以通過LSN號來恢復(fù)指定的LSN。獲取LSN相關(guān)信息,可以通過。這種方式只能通過T-SQL來實(shí)現(xiàn)。RESTOREDATABASEFamilyFROMDISK='D:\family_20100108.bak'WITHNORECOVRYRESTORELOGFamilyFROMDISK='D:\family_20100108.trn'WITHRECOVRY,STOPATMARKLSN:2433:5422LogMarks也可以通過創(chuàng)建LogMark,可以恢復(fù)至指定的LogMarks。例如,創(chuàng)建了一個(gè)logmarkexample,則在恢復(fù)時(shí),恢復(fù)到logmarkexample。SQLcodeRESTOREDATABASEFamilyFROMDISK='D:\family_20100108.bak'WITHNORECOVRYRESTORELOGFamilyFROMDISK='D:\family_20100108.trn'WITHRECOVRY,STOPATMARK'logmarkexample'6、對鏡像備份或條帶備份的恢復(fù)對鏡像備份而言,每一份備份都是一樣的,因此恢復(fù)任何一份備份都可以完成恢復(fù)。對條帶備份而言,則需要同時(shí)指定所有的條帶備份,這種備份可以比單獨(dú)一個(gè)備份來得快。條帶備份例子如下:SQLcodeRESTOREDATABASEFamilyFROMDISK='D:\family_20100108.bak',DISK='D:\family_20100108.bak'WITHNORECOVRY7、恢復(fù)數(shù)據(jù)頁在SQLServer2005以后,SQLServer提供了對數(shù)據(jù)頁恢復(fù)的功能。對數(shù)據(jù)頁恢復(fù)可以在聯(lián)機(jī)或者脫機(jī)狀態(tài)下進(jìn)行但只能對實(shí)際用戶數(shù)據(jù)頁進(jìn)行恢復(fù),而其他的頁則無法通過備份來恢復(fù)。如GlobalAllocationMap(GAM),SecondaryGlobalAllocationMap(SGAM),PageFreeSpace(PFS)等?;謴?fù)數(shù)據(jù)頁相當(dāng)于進(jìn)行完全恢復(fù),不同的是需要指定具體的頁面。RESTOREDATABASEFamilyPAGE'20:1570,20:1571,20:1572'FROMDISK='D:\family_20100108.bak'WITHNORECOVRY數(shù)據(jù)頁可以通過MSDB..SUSPECT_PAGE或者DBCCCHECKDB來查找。8、對系統(tǒng)數(shù)據(jù)庫的恢復(fù)系統(tǒng)數(shù)據(jù)庫存儲著一個(gè)SQLServer實(shí)例上相關(guān)數(shù)據(jù)庫的信息,如果丟失,將會帶來更大的損失。MASTERMaster數(shù)據(jù)庫的恢復(fù)與其他數(shù)據(jù)庫的恢復(fù)是不同的。要恢復(fù)MASTER數(shù)據(jù)庫,需要從將SQLServer切換至單用戶模式,如果無法切換,則停止SQLServer服務(wù),然后用sqlserver-m命令行啟動。當(dāng)然,也可以用netstart“服務(wù)器名”來啟動SQLServer服務(wù)。啟動后,再用SQLCMD命令進(jìn)行還原MSDB在MSDB里面存儲得比較多的是SQLAgent里的內(nèi)容,如作業(yè),調(diào)度,操作員,警告等信息;同時(shí)還存放SQLServerIntegrationService(SSIS)等信息。其恢復(fù)過程與普通數(shù)據(jù)庫恢復(fù)過程是一樣的。并且由于是在簡單模式下,因而其恢復(fù)過程更加簡單。MODELModel數(shù)據(jù)庫用來存放創(chuàng)建數(shù)據(jù)庫時(shí)需要的信息,如果有使用MODEL數(shù)據(jù)庫的話,也需要對其進(jìn)行備份和恢復(fù)。備份與恢復(fù)的過程與普通數(shù)據(jù)庫一致。TempdbTempdb是不需要備份和恢復(fù)的,在每次的啟動過程中,SQLServer會自動清除tempdb,并重新啟動tempdb。在tempdb上需要注意的是其空間規(guī)劃,因?yàn)槟承┣闆r下tempdb會變得非常大,耗盡空間,最終導(dǎo)致SQLServer關(guān)掉。若要修改tempdb的存儲路徑,請使用如下語句:SQLcodeusemastergoAlterdatabasetempdbmodifyfile(name=tempdev,filename='E:\Sqldata\tempdb.mdf')goAlterdatabasetempdbmodifyfile(name=templog,filename='E:\Sqldata
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 招投標(biāo)法規(guī)在電商行業(yè)的應(yīng)用
- 城市更新項(xiàng)目報(bào)價(jià)模板
- 城市綠化養(yǎng)護(hù)招投標(biāo)守則
- 數(shù)字化與綠色技術(shù)促進(jìn)可持續(xù)發(fā)展專題政策研究報(bào)告2024
- 水上樂園建設(shè)項(xiàng)目預(yù)審表
- 本溪市燃?xì)夤艿谰S修質(zhì)量
- 培訓(xùn)機(jī)構(gòu)參觀管理規(guī)定
- 智能家居招投標(biāo)合同樣本模板
- 建筑工程煙囪施工合同樣本
- 城市商業(yè)綜合體書店門面租賃合同
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
- 檔案管理系統(tǒng)用戶操作手冊
- 場內(nèi)運(yùn)輸機(jī)械檢查驗(yàn)收表
- 不銹鋼加工檢驗(yàn)標(biāo)準(zhǔn)
- 康復(fù)治療技術(shù)專業(yè)《疾病學(xué)基礎(chǔ)》課程標(biāo)準(zhǔn)-康復(fù)
- 泰國投資指導(dǎo)手冊
- 安全生產(chǎn)檢查工作計(jì)劃表
- 人教版五年級數(shù)學(xué)上冊《解方程》專項(xiàng)練習(xí)(含答案)
- 打印機(jī)知識課件
- 全國初中數(shù)學(xué)青年教師優(yōu)質(zhì)課一等獎(jiǎng)《反比例函數(shù)的圖象和性質(zhì)》課件
- qc知識培訓(xùn)課件
評論
0/150
提交評論