您好,登錄后才能下訂單哦!
目標(biāo):
1.理解SQLServer2008R2的備份方式(完整,差異,日志備份)和恢復(fù)模式;
2.能夠進(jìn)行完整備份,差異備份操作,事務(wù)日志備份,并進(jìn)行恢復(fù)操作;
3.使用維護(hù)計(jì)劃實(shí)現(xiàn)日常的數(shù)據(jù)庫備份操作;
一、SQLServer2008R2的備份恢復(fù)
1、恢復(fù)模式類型
所有的數(shù)據(jù)庫都可以設(shè)置為三個(gè)不同的恢復(fù)模式:簡單(simple), 完全(full),大容量日志(Bulk-Logged).
A完全恢復(fù)模式
完全恢復(fù)模式是默認(rèn)的恢復(fù)模式。在完全恢復(fù)模式下,需要手工的對(duì)事務(wù)日志進(jìn)行管理。使用完全恢復(fù)模式的優(yōu)點(diǎn)是可以恢復(fù)到數(shù)據(jù)庫失敗或者指定的時(shí)間點(diǎn)上。缺點(diǎn) 則是,如果沒有進(jìn)行管理的話,事務(wù)日志將會(huì)快速增長,消耗磁盤空間。要清除事務(wù)日志,只能通過備份事務(wù)日志,或者切換至簡單模式。
B簡單恢復(fù)模式
與完全恢復(fù)模式不同的是,在簡單恢復(fù)模式下,在檢查點(diǎn)發(fā)生時(shí)(checkpoint),當(dāng)前已被提交的事務(wù)日志將會(huì)被清除。
因此,在簡單恢復(fù)模式下,容易造成數(shù)據(jù)丟失,因?yàn)闊o法將數(shù)據(jù)庫恢復(fù)到失敗的那一刻。需要注意的是,雖然在簡單恢復(fù)模式下,系統(tǒng)會(huì)自動(dòng)定期清除日志,但這并不意味著事務(wù)日志文件不會(huì)增長。例如,如果執(zhí)行一個(gè)批量插入操作時(shí),SQL SERVER會(huì)將該相關(guān)操作當(dāng)成一個(gè)事務(wù),期間產(chǎn)生的日志量在極端情況下,還是非常可觀的。
C大容量日志恢復(fù)模式
大容量日志恢復(fù)模式與完全恢復(fù)模式非常相似,但與完全恢復(fù)模式不同的是,批量操作將會(huì)盡量被最少記錄。
批量操作有以下幾種類型:
創(chuàng)建邏輯備份設(shè)備的腳本如下:?
SQL code
EXEC sp_adddumpdevice @devtype=’disk’,@logicalname=’MYBackup’,@physicalname=’D:\backup\mydb.bak’
刪除備份設(shè)備的腳本:?
SQL code
Sp_dropdevice @logicalname=’MYBackup’
上述腳本只是刪除邏輯備份設(shè)備的定義,下述腳本將同時(shí)刪除備份文件:?
SQL code
Sp_dropdevice @logicalname=’MYBackup’,@devfile=’DELFILE’
使用邏輯備份設(shè)備的方法如下:?
SQL code
Backup database mydb to MYBackup
當(dāng)然,還可在邏輯備份設(shè)備上指定過期時(shí)間等備份屬性,如:?
SQL code
Backup database mydb to MYBackup WITH EXPIREDATE=’13/01/2010’
或:?
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7
3、備份集與存儲(chǔ)集
每一份備份包含于一個(gè)備份集,而一個(gè)備份集包含于一個(gè)存儲(chǔ)集。通過系統(tǒng)GUI進(jìn)行備份時(shí),SQL Server會(huì)自動(dòng)指定備份集和存儲(chǔ)集,目的則是為了簡化管理。用T-SQL顯示指定則用如下語法:
SQL code
BACKUP DATABASE mydb to MYBackup WITH RETAINDAYS=7,
NAME=’FULL’,MEDIANAME=’ALLBackups’
NAMEs是指備份集名稱,MEDIANAME是指存儲(chǔ)集名稱。
4、全備份
不管恢復(fù)模式是哪一個(gè),所有的備份都必須要有一個(gè)全備份,特別是日志備份和差異備份,如果沒有全備份的話,將無法進(jìn)行恢復(fù)。
簡單的全備份腳本如下所示,也可以通過維護(hù)計(jì)劃來指定全備份:?
SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’
但需要注意的是,上述命令是將數(shù)據(jù)庫備份附加到當(dāng)前的存在的文件上,如果不存在則創(chuàng)建它,并不會(huì)覆蓋原有文件。要覆蓋同名的備份文件,需要指定INIT參數(shù)。?
SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’ WITH INIT
5、日志備份
在完全恢復(fù)模式或者大容量日志恢復(fù)模式下,日志備份不僅僅是恢復(fù)的需要,同時(shí)也是手工管理事務(wù)日志文件的一種方式。如果從不進(jìn)行備份的話,在完全恢復(fù)模式或者大容量恢復(fù)模式下,事務(wù)日志將會(huì)持續(xù)增長,直至消耗完所在磁盤。
日志備份的腳本如下:?
SQL code
BACKUP LOG mydb_log TO DISK=’D:\backup\mydb.trn’
需要養(yǎng)成使用.trn為日志備份的擴(kuò)展名的習(xí)慣。
每個(gè)在數(shù)據(jù)庫上的動(dòng)作都會(huì)被安排一個(gè)Log Sequence Number (LSN)。如果需要還原到指定的時(shí)間點(diǎn),需要有持續(xù)的LSN記錄。也就是說,在完全恢復(fù)模式或者大容量日志模式下,一個(gè)不被打斷的事務(wù)日志備份鏈?zhǔn)腔謴?fù)數(shù)據(jù)庫的基本要求。
6、差異備份
使用日志備份來恢復(fù)時(shí),無疑是一個(gè)很慢的過程,特別是上一個(gè)全備份的歷史比較悠久時(shí)。使用差異備份,便能縮短恢復(fù)時(shí)間。事實(shí)上,差異備份只是BACKUP DATABASE的一個(gè)選項(xiàng),如下:?
SQL code
BACKUP DATABASE mydb TO DISK=’D:\backup\mydb.dif’ WITH DIFFERENTIAL,INIT
進(jìn)行數(shù)據(jù)庫恢復(fù)時(shí),先恢復(fù)數(shù)據(jù)庫全備份,再恢復(fù)數(shù)據(jù)庫差異備份,最后才恢復(fù)日志備份。差異備份是與上一次全備份緊密相連的,不管期間有多少次日志備份和差異備份,差異備份還是會(huì)從上一次全備開始備份。因此,經(jīng)常會(huì)遇到這樣的一種情況,在生產(chǎn) 庫上需要臨時(shí)使用數(shù)據(jù)庫時(shí),便用BACKUP DATABASE … TO DISK=’..’進(jìn)行了一個(gè)備份,下一次的差異備份便會(huì)以這回的全備為準(zhǔn),如果過后把這個(gè)臨時(shí)全備刪除掉后,后面的差異備份就沒用了。差異備份并不意味著磁盤空間肯定會(huì)少,這取決于實(shí)際情況。當(dāng)期間大量操作發(fā)生時(shí),差異備份還是會(huì)變得很大。
7、錯(cuò)誤檢測
在備份過程中,備份進(jìn)程會(huì)同時(shí)驗(yàn)證數(shù)據(jù),或者校驗(yàn)不完整頁(torn page),或者驗(yàn)證校驗(yàn)和(checksum)。要使用該功能,需要激活該選項(xiàng)。
不完整頁檢測(Torn-page dection)僅僅檢查每一個(gè)頁看是否已經(jīng)寫完成。如果發(fā)現(xiàn)一個(gè)頁只有部分被寫入,那么就將其標(biāo)記為torn。
校驗(yàn)和驗(yàn)證(checksum validation)是一種新的頁驗(yàn)證機(jī)制。它會(huì)為每個(gè)頁添加一個(gè)值來表明該頁實(shí)際的大小。雖然看起來是個(gè)代價(jià)很高影響性能的操作,但事實(shí)上,它的效率非常高,與torn-page差不多。
備份進(jìn)程在備份數(shù)據(jù)庫時(shí),會(huì)通過比較在數(shù)據(jù)庫里的和隨著備份頁寫入硬盤時(shí)這兩個(gè)之間的值來進(jìn)行驗(yàn)證。但是,這個(gè)驗(yàn)證并不是自動(dòng)完成的,需要顯示指定,在GUI頁面上是個(gè)選項(xiàng)。如果通過T-SQL來備份的話,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\data\mydb.bak’ WITH CHECKSUM
如果備份過程中,發(fā)現(xiàn)了錯(cuò)誤,SQL Server會(huì)錯(cuò)誤信息寫入MSDB上的SUSPECT_PAGE表里面。同時(shí),在默認(rèn)情況下,備份行為會(huì)停止的(STOP_ON_ERROR),以便管理員排查錯(cuò)誤。
但備份過程中的校驗(yàn)和驗(yàn)證還有另外一個(gè)選項(xiàng)(CONTINUE_ON_ERROR),也就是說,如果發(fā)現(xiàn)錯(cuò)誤,備份過程并不會(huì)中斷,而是將錯(cuò)誤頁信息記錄在 MSDB..SUSPECT_PAGE上而已。需要注意的是,SUSPECT_PAGE表是有行限制的,最多只能達(dá)到1000行,如果達(dá)到了的話,備份同 樣會(huì)失敗。激活校驗(yàn)和驗(yàn)證的話,很明顯會(huì)影響備份的性能。但還是很有必要的。
8、安全備份
完全備份和日志備份語句還支持使用密碼屬性,如:?
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’ WITH PASSWORD=’mydb’
所指定的密碼是很容易破解的。因此,如果確實(shí)需要對(duì)某些備份數(shù)據(jù)進(jìn)行加密的話,可以將備份存放于加密的文件系統(tǒng)或者其它安全的存儲(chǔ)設(shè)備上。
同時(shí),SQL Server還提供了對(duì)真實(shí)列進(jìn)行加密的功能。該加密功能是工業(yè)標(biāo)準(zhǔn)。
9、條帶備份
有些情況下,單獨(dú)一個(gè)硬盤無法存儲(chǔ)一個(gè)完整的數(shù)據(jù)庫備份時(shí),可以將數(shù)據(jù)庫備份分成多個(gè)部分存儲(chǔ)在不同的磁盤上,這種備份方式成為條帶備份。使用條帶備份的優(yōu)點(diǎn)很明確,就是能很好的利用空間,但如果某部分備份丟失或者損壞,那整個(gè)備份將無效。
其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’,DISK=’E:\mydb.bak’ WITH INIT,CHECKSUM, CONTINUE_ON_ERROR
上述D盤和E盤上的備份是不可分割的。
10、鏡像備份
與條帶備份在多個(gè)磁盤上保留同一份備份不同的是,鏡像備份是在不同磁盤上保留多份備份。其語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’
MIRROR TO DISK=’E:\mydb.bak’
WITH INIT,CHECKSUM,CONTINUE_ON_ERROR
在實(shí)際情況下,對(duì)日志備份采取鏡像備份方式會(huì)比較合適。
11、COPY-ONLY 備份
在差異備份里曾提到過,差異備份是建立在上一個(gè)全備份的基礎(chǔ)上的。因此如果在一個(gè)事先安排好的備份計(jì)劃里,如果在全備份和差異備份之間再進(jìn)行了一次全備份后,其差異備份會(huì)被打斷,如果把臨時(shí)全備份刪除掉后,就產(chǎn)生了數(shù)據(jù)丟失。在SQL SERVER 2005以后,SQL SERVER提供了一個(gè)選項(xiàng)copy-only.使用copy-only選項(xiàng)進(jìn)行的全備份便不會(huì)打算原先的備份計(jì)劃,語句如下:
SQL code
BACKUP DATABASE mydb TO DISK=’D:\mydb.bak’ WITH INIT,CHECKSUM,COPY_ONLY
三、文件和文件組備份
1、備份數(shù)據(jù)文件
備份數(shù)據(jù)文件同樣可以通過BACKUP DATABASE語句來實(shí)現(xiàn)。如下:?
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’ TO DISK=’E:\Backup\mydbdata.bak’
上述語句相當(dāng)于數(shù)據(jù)文件級(jí)別的全備份,與數(shù)據(jù)庫級(jí)別的備份類似,文件級(jí)別上的備份也有差異備份,當(dāng)然前提是要有相對(duì)應(yīng)的文件全備份。
差異備份的語句如下:
SQL code
BACKUP DATABASE mydb FILE=’D:\Data\mydb.ndf’ WITH DIFFERENTIAL
TO DISK=’E:\Backup\mydbdata_dif.bak’
5、備份文件組
與單獨(dú)備份文件類似,也可以對(duì)文件組進(jìn)行類似的備份操作。備份文件組的方式也有兩種,一種是通過GUI界面指定,一種則是通過T-SQL。
T-SQL的語句如下:?
SQL code
BACKUP DATABASE mydb FILEGROUP=’PRIMARY’ TO DISK=’E:\Backup\mydbpri.bak’
6、不完全備份(partial backup)
在文件組備份上,不完全備份其實(shí)相當(dāng)于完全備份,可以通過指定關(guān)鍵字READ_WRITE_FILEGROUPS來實(shí)現(xiàn)不完全備份。
語句如下:?
SQL code
BACKUP DATABASE mydb READ_WRITE_FILEGROUPS TO DISK=’D:\mydb.bak’
那不完全備份到底是什么意思呢?什么時(shí)候需要不完全備份?如果對(duì)一個(gè)文件組設(shè)置了只讀,而這只讀的文件組又需要進(jìn)行一次備份,這時(shí),可以不用BACKUP DATABASE語句進(jìn)行備份,只需要挑個(gè)時(shí)間停止實(shí)例,然后執(zhí)行不完全備份。
四、數(shù)據(jù)恢復(fù)
1、Restore vs. Recovery
Restore和Recovery是兩個(gè)不同的概念,但在數(shù)據(jù)恢復(fù)過程中又是緊密聯(lián)系的。
Restore相當(dāng)于從備份集中重建整個(gè)或者部分?jǐn)?shù)據(jù)庫,Restore是無法改變數(shù)據(jù)庫狀態(tài)的,如脫機(jī)和聯(lián)機(jī)等。
一旦對(duì)數(shù)據(jù)庫進(jìn)行了Recovery,則將無法再進(jìn)行Restore操作。
數(shù)據(jù)庫恢復(fù)的語句如下:?
SQL code
RESTORE DATABASE mydb FROM mydbdevice WITH RECOVERY
顯示指定RECOVERY 或者NORECOVERY是個(gè)良好的習(xí)慣。
2、備份文件里面的信息
在primary文件里,存儲(chǔ)著與數(shù)據(jù)庫結(jié)構(gòu)有關(guān)的一些信息,如文件位置等。因此備份后,這些信息同樣保留在備份文件里面。如果要恢復(fù)到不同的磁盤上或服務(wù)器后,需要進(jìn)行額外的更改。
在SQL Server里,提供了 RESTORE HEADERONLY, RESTORE FILELISTONLY, RESTORE LABELONLY, RESTORE VERIFYONLY 等命令來讀取備份文件的信息。也可以通過MSDB里的表來獲取備份集的相關(guān)信息。
A.RESTORE HEADERONLY
SQL code
RESTORE HEADERONLY
FROM DISK='D:\family_20100108.bak'
各字段的含義可以查看聯(lián)機(jī)叢書。
B.RESOTRE FILELISTONLY
SQL code
RESTORE FILELISTONLY
FROM DISK='D:\family_20100108.bak'
C.RESOTRE LABELONLY
SQL code
RESTORE LABELONLY
FROM DISK='D:\family_20100108.bak'
D.RESOTORE VERIFYONLY
SQL code
RESTORE VERIFYONLY
FROM DISK='D:\family_20100108.bak'
3、從全備份中恢復(fù)
需要注意的是,在做恢復(fù)之前,應(yīng)該養(yǎng)成對(duì)當(dāng)前日志進(jìn)行備份的習(xí)慣,否則容易造成數(shù)據(jù)丟失。SQL Server雖然提供REPLACE選項(xiàng)以便強(qiáng)制恢復(fù),但這樣子末尾日志就丟掉了。
通常,如果未對(duì)當(dāng)前日志進(jìn)行備份,那么會(huì)收到如下錯(cuò)誤
上述錯(cuò)誤,提到了使用WITH REPLACE 或者WITH STOPAT命令來完成恢復(fù),但應(yīng)盡量避免使用這兩個(gè)命令。
如果要將數(shù)據(jù)庫恢復(fù)到不同的磁盤上,可以通過GUI頁面指定,也可以通過T-SQL語句來實(shí)現(xiàn)。
T-SQL實(shí)現(xiàn)的方式如下:
SQL code
RESTORE DATABASE Family
FROM DISK='D:\family_20100108.bak'
WITH MOVE 'Family'TO 'D:\Family.mdf',
MOVE 'Family_Log' TO 'D:\Family.ldf'
WITH RECOVERY
4、恢復(fù)到指定的時(shí)間點(diǎn)
要恢復(fù)到指定的時(shí)間點(diǎn)有三種選擇,一種是通過明確指定時(shí)間,一種通過指定LSN號(hào),另外一種則是通過創(chuàng)建和指定log marks。
A. TIME
通常情況下,恢復(fù)都會(huì)有要求恢復(fù)到指定時(shí)間點(diǎn)的要求,可通過GUI界面來實(shí)現(xiàn),也可以通過T-SQL 來實(shí)現(xiàn)
SQL code
RESTORE DATABASE Family
FROM DISK='D:\family_20100108.bak'
WITH NORECOVERY
RESTORE LOG Family
FROM DISK='D:\family_20100108.trn'
WITH RECOVERY,STOPAT 'jan 8,2009 3:10pm'
B. LSN
如果知道確切的LSN號(hào),也可以通過LSN號(hào)來恢復(fù)指定的LSN。獲取LSN相關(guān)信息,可以通過RESOTRE HEADERONLY。這種方式只能通過T-SQL來實(shí)現(xiàn)。
SQL code
RESTORE DATABASE Family
FROM DISK='D:\family_20100108.bak'
WITH NORECOVRY
RESTORE LOG Family
FROM DISK='D:\family_20100108.trn'
WITH RECOVRY,STOPATMARK LSN:2433:5422
C. Log Marks
?也可以通過創(chuàng)建Log Mark,可以恢復(fù)至指定的Log Marks。例如,創(chuàng)建了一個(gè)logmarkexample,則在恢復(fù)時(shí),恢復(fù)到logmarkexample。
SQL code
RESTORE DATABASE Family
FROM DISK='D:\family_20100108.bak'
WITH NORECOVRY
RESTORE LOG Family
FROM DISK='D:\family_20100108.trn'
WITH RECOVRY,STOPATMARK 'logmarkexample'
5、對(duì)鏡像備份或條帶備份的恢復(fù)
對(duì)鏡像備份而言,每一份備份都是一樣的,因此恢復(fù)任何一份備份都可以完成恢復(fù)。對(duì)條帶備份而言,則需要同時(shí)指定所有的條帶備份,這種備份可以比單獨(dú)一個(gè)備份來得快。
條帶備份例子如下:
SQL code
RESTORE DATABASE Family
FROM DISK='D:\family_20100108.bak',
DISK='D:\family_20100108.bak'
WITH NORECOVRY
6、恢復(fù)數(shù)據(jù)頁
在SQL Server2005以后,SQL Server提供了對(duì)數(shù)據(jù)頁恢復(fù)的功能。對(duì)數(shù)據(jù)頁恢復(fù)可以在聯(lián)機(jī)或者脫機(jī)狀態(tài)下進(jìn)行
但只能對(duì)實(shí)際用戶數(shù)據(jù)頁進(jìn)行恢復(fù),而其他的頁則無法通過備份來恢復(fù)。如Global Allocation Map(GAM), Secondary Global Allocation Map(SGAM), Page Free Space(PFS)等。
恢復(fù)數(shù)據(jù)頁相當(dāng)于進(jìn)行完全恢復(fù),不同的是需要指定具體的頁面。
SQL code
RESTORE DATABASE Family PAGE '20:1570,20:1571,20:1572'
FROM DISK='D:\family_20100108.bak'
WITH NORECOVRY
數(shù)據(jù)頁可以通過MSDB..SUSPECT_PAGE或者DBCC CHECKDB來查找。
7、對(duì)系統(tǒng)數(shù)據(jù)庫的恢復(fù)
系統(tǒng)數(shù)據(jù)庫存儲(chǔ)著一個(gè)SQL Server實(shí)例上相關(guān)數(shù)據(jù)庫的信息,如果丟失,將會(huì)帶來更大的損失。
A. MASTER
Master數(shù)據(jù)庫的恢復(fù)與其他數(shù)據(jù)庫的恢復(fù)是不同的。要恢復(fù)MASTER數(shù)據(jù)庫,需要從將SQL Server切換至單用戶模式,如果無法切換,則停止SQL Server服務(wù),然后用sqlserver –m命令行啟動(dòng)。
當(dāng)然,也可以用net start “服務(wù)器名” 來啟動(dòng)SQL Server服務(wù)。啟動(dòng)后,再用SQLCMD命令進(jìn)行還原
B. MSDB
在MSDB里面存儲(chǔ)得比較多的是SQL Agent里的內(nèi)容,如作業(yè),調(diào)度,操作員,警告等信息;同時(shí)還存放SQL Server Integration Service(SSIS)等信息。
其恢復(fù)過程與普通數(shù)據(jù)庫恢復(fù)過程是一樣的。并且由于是在簡單模式下,因而其恢復(fù)過程更加簡單。
C. MODEL
Model數(shù)據(jù)庫用來存放創(chuàng)建數(shù)據(jù)庫時(shí)需要的信息,如果有使用MODEL數(shù)據(jù)庫的話,也需要對(duì)其進(jìn)行備份和恢復(fù)。
備份與恢復(fù)的過程與普通數(shù)據(jù)庫一致。
D. Tempdb
Tempdb是不需要備份和恢復(fù)的,在每次的啟動(dòng)過程中,SQL Server會(huì)自動(dòng)清除tempdb,并重新啟動(dòng)tempdb。在tempdb上需要注意的是其空間規(guī)劃,因?yàn)槟承┣闆r下tempdb會(huì)變得非常大,耗盡空間,最終導(dǎo)致SQL Server關(guān)掉。
若要修改tempdb的存儲(chǔ)路徑,請(qǐng)使用如下語句:
SQL code
use master
go
Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
Go
E. Resource
Resource是SQL Server2005以后新引進(jìn)的一個(gè)數(shù)據(jù)庫,將以前存放于master等其他系統(tǒng)數(shù)據(jù)庫的部分信息存放于Resource數(shù)據(jù)庫里。
對(duì)Resource不能通過T-SQL或者GUI備份,因?yàn)榭床坏剿?,要?duì)其進(jìn)行備份,只能通過手工直接拷貝其物理文件。
6、數(shù)據(jù)文件備份的恢復(fù)
在第三部份里面提到了文件的備份,這種單個(gè)或多個(gè)文件的備份,其恢復(fù)方式與數(shù)據(jù)庫恢復(fù)類似。但要養(yǎng)成一個(gè)良好的習(xí)慣,在恢復(fù)前,備份當(dāng)前的日志文件。
SQL code
BACKUP LOG Family
TO DISK='E:\Familylog.bak'
WITH NORECOVERY
接著對(duì)需要還原的文件進(jìn)行還原,如 ??
SQL code
RESTORE DATABASE Family
FILE='D:\DATA\Family.mdf'
FROM DISK='E:\Familyprimary.bak'
WITH NORECOVERY
RESTORE LOG Family
FROM DISK='E:\Familylog.bak'
WITH NORECOVERY
RESTORE DATABASE Family
WITH RECOVERY
如果在數(shù)據(jù)文件上還有差異備份,日志恢復(fù)前進(jìn)行差異備份恢復(fù),如:
SQL code
RESTORE DATABASE Family
FILE='D:\DATA\Family.mdf'
FROM DISK='E:\Familyprimary.bak'
WITH NORECOVERY
RESTORE DATABASE Family
FILE='D:\DATA\Family.mdf'
FROM DISK='E:\Familyprimay.dif'
WITH NORECOVERY
RESTORE LOG Family
FROM DISK='E:\Familylog.bak'
WITH NORECOVERY
RESTORE DATABASE Family
WITH RECOVERY
7、文件組的恢復(fù)
與數(shù)據(jù)文件恢復(fù)原理是一致的,只不過是將具體文件文件組。
SQL code
BACKUP LOG Family
TO DISK='E:\Familylog.bak'
WITH NORECOVERY
RESTORE DATABASE Family
FILEGROUP='PRIMARY'
FROM DISK='E:\Familyprimary.bak'
WITH NORECOVERY
RESTORE LOG Family
FROM DISK='E:\Familylog.bak'
WITH NORECOVERY
RESTORE DATABASE Family
WITH RECOVERY
定時(shí)任務(wù):
◆1、管理->SQL Server代理->作業(yè)(按鼠標(biāo)右鍵)->新建作業(yè)->
◆2、新建作業(yè)屬性(常規(guī))->名稱[自定義本次作業(yè)的名稱]->啟用的方框內(nèi)是勾號(hào)->
分類處可選擇也可用默認(rèn)的[未分類(本地)]->所有者默認(rèn)為登錄SQL Server用戶[也可選其它的登錄]->
描述[填寫本次工作詳細(xì)描述內(nèi)容];
[ 創(chuàng)建作業(yè)分類的步驟:
SQL Server代理->作業(yè)->右鍵選所有任務(wù)->添加、修改、刪除 ]
◆3、新建作業(yè)屬性(步驟)->新建->步驟名[自定義第一步驟名稱]->類型[Transact-SQL(TSQL)腳本]->
數(shù)據(jù)庫[要操作的數(shù)據(jù)庫]->命令
[如果是簡單的SQL直接寫進(jìn)去即可,也可用打開按鈕輸入一個(gè)已寫好的*.sql文件
如果要執(zhí)行存儲(chǔ)過程,填
exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
->確定
(如果有多個(gè)步驟,可以再次調(diào)用下面的新建按鈕;也可以對(duì)已有的多個(gè)步驟插入、編輯、刪除);
◆4、建作業(yè)屬性(調(diào)度)->新建調(diào)度->名稱[自定義調(diào)度名稱]->啟用的方框內(nèi)是勾號(hào)->調(diào)度->反復(fù)出現(xiàn)->
更改[調(diào)度時(shí)間表]->確定
(如果只要保存此作業(yè),不要定時(shí)做可以把啟用的方框內(nèi)是勾號(hào)去掉);
◆5、建作業(yè)屬性(通知)->用默認(rèn)的通知方法就好[當(dāng)作業(yè)失敗時(shí),寫入Windows應(yīng)用程序系統(tǒng)日志] ->確定。
跟作業(yè)執(zhí)行相關(guān)的一些SQL Server知識(shí):
SQLSERVERAGENT服務(wù)必須正常運(yùn)行,啟動(dòng)它的NT登錄用戶要跟啟動(dòng)SQL Server數(shù)據(jù)庫的NT登錄用戶一致。
點(diǎn)作業(yè)右鍵可以查看作業(yè)執(zhí)行的歷史記錄情況,也可以立即啟動(dòng)作業(yè)和停止作業(yè)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。