濮阳杆衣贸易有限公司

主頁 > 知識庫 > SQL SERVER 數(shù)據(jù)庫備份的三種策略及語句

SQL SERVER 數(shù)據(jù)庫備份的三種策略及語句

熱門標(biāo)簽:400電話辦理泰安 零成本地圖標(biāo)注賺錢 電話機(jī)器人怎么代理商 互聯(lián)網(wǎng)電話外呼系統(tǒng) 家庭農(nóng)場地圖標(biāo)注名稱怎樣起名 我要地圖標(biāo)注數(shù)量有限制嗎 千呼電話機(jī)器人可以試用嗎 電銷需要外呼系統(tǒng)嗎 安卡拉地圖標(biāo)注app

1.全量數(shù)據(jù)備份

   備份整個數(shù)據(jù)庫,恢復(fù)時恢復(fù)所有。優(yōu)點是簡單,缺點是數(shù)據(jù)量太大,非常耗時
全數(shù)據(jù)庫備份因為容易實施,被許多系統(tǒng)優(yōu)先采用。在一天或一周中預(yù)定的時間進(jìn)行全數(shù)據(jù)庫備份使你不用動什么腦筋。使用這種類型的備份帶來的問題是非常缺乏靈活性,而且當(dāng)數(shù)據(jù)庫被沖掉后,你面臨丟失大量數(shù)據(jù)的潛在威脅。例如,假設(shè)你每天在午夜備份數(shù)據(jù)庫。

如果服務(wù)器在晚上11點崩潰了,你將丟失前面23個小時對數(shù)據(jù)所做的全部修改。對大多數(shù)系統(tǒng)來說,這是無法接受的。對此規(guī)則,為數(shù)不多的例外如下:

1.系統(tǒng)中所存的數(shù)據(jù)可以很容易地再創(chuàng)建。這類服務(wù)器中一個很好的例子是報表服務(wù)器,其中所存的所有數(shù)據(jù)都由一個批處理過程裝載的。如果這個數(shù)據(jù)庫被沖掉了,你只需要再運行一次這個批處理過程,所有數(shù)據(jù)就可以恢復(fù)了。
2.不經(jīng)常修改的數(shù)據(jù)庫。一個例子是被收集存儲在數(shù)據(jù)中心或數(shù)據(jù)倉庫的歷史數(shù)據(jù)。通常,查詢這些數(shù)據(jù)以判斷趨勢,但是這些數(shù)據(jù)極少被修改。
3.一個遙遠(yuǎn)的站點,那里很少或沒有數(shù)據(jù)庫管理員支持。這種類型的站點常常依靠沒受過足夠培訓(xùn)的人來維持備份計劃,并且他還從事其他工作。通常最好保證實施的備份計劃非常簡單,不必讓那些用戶監(jiān)視和維護(hù)它。
4.系統(tǒng)中所存數(shù)據(jù)的重要性很低。一個很好的例子是開發(fā)用服務(wù)器。在這些類型的服務(wù)器上,開發(fā)者通常裝載一些舊的或假定的數(shù)據(jù)來測試應(yīng)用程序。這類數(shù)據(jù)庫每天的備份是可接受的。

Sql語句:

BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

2.增量數(shù)據(jù)備份(Differential Backups)

所謂增量,就是以某個起始時間點的全量數(shù)據(jù)為基礎(chǔ),備份該時間點以后的數(shù)據(jù)。而起始時間點的全量數(shù)據(jù),就是通過全量備份而為的。
如果有人告訴你“每周一進(jìn)行全量備份,每天進(jìn)行一次增量備份?!?,這就意味著,星期一作一次全量配份,形成一個起始時間點的全量數(shù)據(jù);星期二備份星期一以來的數(shù)據(jù);星期三也備份星期一以來的數(shù)據(jù);.......星期天也備份星期一以來的數(shù)據(jù)。到第二周的星期一時,又執(zhí)行一次全量配份,再開始新的備份周期。
如果要恢復(fù)星期三的數(shù)據(jù),則要先恢復(fù)星期一的全量數(shù)據(jù),然后再恢復(fù)在星期一到星期三之間的增量數(shù)據(jù)。
 
增量備份是能用來幫助你實施備份計劃的最新技術(shù)。這種備份,像事務(wù)日志備份一樣,只備份你上次全數(shù)據(jù)庫備份后所做的修改。與事務(wù)日志備份不一樣的是這種備份不允許時間點恢復(fù)。它只允許你在實際所做的備份點上恢復(fù)。所以,這種備份通常要有事務(wù)日志備份作為補(bǔ)充。在下列情況下,增量備份非常有用:

1.你想通過聯(lián)合使用全數(shù)據(jù)庫備份、增量備份和事務(wù)日志備份最大程度地減少花費的時間。
2.數(shù)據(jù)庫的大小使經(jīng)常做全數(shù)據(jù)庫備份很困難的情況。
3.一個遙遠(yuǎn)的站點,那里很少或沒有數(shù)據(jù)庫管理員支持。這種類型的站點常常依靠沒受過足夠培訓(xùn)的人來維持備份計劃,而且他還經(jīng)常從事其他工作。通常最好保證實施的備份計劃非常簡單,不必讓那些用戶監(jiān)視和維護(hù)它。
4.系統(tǒng)中所存數(shù)據(jù)不是非常重要,所以所做的一些修改丟失后,不會導(dǎo)致災(zāi)難性的后果。對于這種類型的系統(tǒng),手工重建數(shù)據(jù)比建立一個事務(wù)日志備份計劃更容易。

Sql語句

BACKUP DATABASE [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'wxh-Differential Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO 

3.日志備份 
   周一做一次全量數(shù)據(jù)備份,周二時備份 周一至周二 的日志,周三時配份 周二至周三 的日志......。
   若要恢復(fù)周三的數(shù)據(jù),則先恢復(fù)到周一的全量數(shù)據(jù),再按 周一至周二的日志、 周二至周三的日志 進(jìn)行數(shù)據(jù)庫操作

一個事務(wù)日志備份只備份事務(wù)日志中的信息。事務(wù)日志備份必須與至少一次全數(shù)據(jù)庫備份聯(lián)用,這是因為如果恢復(fù)數(shù)據(jù),必須要有一個開始點。事務(wù)日志備份比全數(shù)據(jù)庫備份少花費許多資源,經(jīng)常執(zhí)行也容易多了。這實際上有兩個目的。首先是縮短了最后一次備份與服務(wù)器失敗之間的時間間隔,因而減少了數(shù)據(jù)損失。事務(wù)日志備份還允許你實施一種特殊類型的恢復(fù),即時間點恢復(fù)。這種類型的恢復(fù)允許你恢復(fù)數(shù)據(jù)到一個特定的時間點,比如到一次實際失敗發(fā)生前5分鐘時。
當(dāng)某人所做的大量的數(shù)據(jù)修改或刪除要取消時,它顯得特別有用。你只需簡單地恢復(fù)數(shù)據(jù)庫到這次動作發(fā)生的時間點前。事務(wù)日志恢復(fù)在下列情況時非常有用:

1.數(shù)據(jù)庫被高頻率地修改。在發(fā)生大量的數(shù)據(jù)庫修改時,數(shù)據(jù)庫備份可能很快就過時了,如果把事務(wù)日志備份和全數(shù)據(jù)庫備份聯(lián)系起來使用,這些修改你都能記錄下來。
2.你想采取時間點恢復(fù)。像我前面提到的,時間點恢復(fù)是非常重要和有用的,你可以通過事務(wù)日志備份來實現(xiàn)。
3.不能接受丟失大量數(shù)據(jù)的情況。在這種情況下,你可以每天做一個全數(shù)據(jù)庫備份,再每小時或更頻繁地做事務(wù)日志備份。這將減少數(shù)據(jù)丟失量。
4.數(shù)據(jù)庫的大小使得經(jīng)常做全數(shù)據(jù)庫備份很困難。例如,非常大的數(shù)據(jù)倉庫很容易達(dá)到上萬億字節(jié)。這種情況下,你可以做一次全數(shù)據(jù)庫備份,然后當(dāng)數(shù)據(jù)修改時,再做一次事務(wù)日志備份。

Sql語句:

BACKUP LOG [wxh] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\wxh.bak' WITH NOFORMAT, NOINIT, NAME = N'wxh-Transaction Log Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

4.增量數(shù)據(jù)備份與日志備份相結(jié)合

sql語句:

備份整個數(shù)據(jù)庫:
BACKUP DATABASE { database_name | @database_name_var }
TO backup_device > [ ,...n ]
[ WITH
    [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
    [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
    [ [ , ] DIFFERENTIAL ]
    [ [ , ] EXPIREDATE = { date | @date_var }
        | RETAINDAYS = { days | @days_var } ]
    [ [ , ] PASSWORD = { password | @password_variable } ]
    [ [ , ] FORMAT | NOFORMAT ]
    [ [ , ] { INIT | NOINIT } ]
    [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
    [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
    [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
    [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
    [ [ , ] { NOSKIP | SKIP } ]
    [ [ , ] { NOREWIND | REWIND } ]
    [ [ , ] { NOUNLOAD | UNLOAD } ]
    [ [ , ] RESTART ]
    [ [ , ] STATS [ = percentage ] ]
]
備份特定的文件或文件組:
BACKUP DATABASE { database_name | @database_name_var }
    file_or_filegroup > [ ,...n ]
TO backup_device > [ ,...n ]
[ WITH
    [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
    [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
    [ [ , ] DIFFERENTIAL ]
    [ [ , ] EXPIREDATE = { date | @date_var }
        | RETAINDAYS = { days | @days_var } ]
    [ [ , ] PASSWORD = { password | @password_variable } ]
    [ [ , ] FORMAT | NOFORMAT ]
    [ [ , ] { INIT | NOINIT } ]
    [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
    [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
    [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
    [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
    [ [ , ] { NOSKIP | SKIP } ]
    [ [ , ] { NOREWIND | REWIND } ]
    [ [ , ] { NOUNLOAD | UNLOAD } ]
    [ [ , ] RESTART ]
    [ [ , ] STATS [ = percentage ] ]
]
備份一個事務(wù)日志:
BACKUP LOG { database_name | @database_name_var }
{     TO backup_device > [ ,...n ]
    [ WITH
        [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
        [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
        [ [ ,] EXPIREDATE = { date | @date_var }
            | RETAINDAYS = { days | @days_var } ]
        [ [ , ] PASSWORD = { password | @password_variable } ]
        [ [ , ] FORMAT | NOFORMAT ]
        [ [ , ] { INIT | NOINIT } ]
        [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
        [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
        [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
        [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
        [ [ , ] NO_TRUNCATE ]
        [ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]
        [ [ , ] { NOREWIND | REWIND } ]
        [ [ , ] { NOSKIP | SKIP } ]
        [ [ , ] { NOUNLOAD | UNLOAD } ]
        [ [ , ] RESTART ]
        [ [ , ] STATS [ = percentage ] ]
    ]  }
backup_device > ::=
    {
        { logical_backup_device_name | @logical_backup_device_name_var }
        |
        { DISK | TAPE } =
            { 'physical_backup_device_name' | @physical_backup_device_name_var }
    }  file_or_filegroup > ::=
    {
        FILE = { logical_file_name | @logical_file_name_var }
        |
        FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
    }

截斷事務(wù)日志:

BACKUP LOG { database_name | @database_name_var }
{     [ WITH
        { NO_LOG | TRUNCATE_ONLY } ]  }

參數(shù)

DATABASE 指定一個完整的數(shù)據(jù)庫備份。假如指定了一個文件和文件組的列表,那么僅有這些被指定的文件和文件組被備份。
說明  在進(jìn)行完整數(shù)據(jù)庫備份或差異數(shù)據(jù)庫備份時,Microsoftreg; SQL Server™ 備份足夠的事務(wù)日志,以生成一個將在還原數(shù)據(jù)庫時使用的一致的數(shù)據(jù)庫。在 master 數(shù)據(jù)庫上只能采用完整數(shù)據(jù)庫備份。
{ database_name | @database_name_var } 指定了一個數(shù)據(jù)庫,從該數(shù)據(jù)庫中對事務(wù)日志、部分?jǐn)?shù)據(jù)庫或完整的數(shù)據(jù)庫進(jìn)行備份。如果作為變量 (@database_name_var) 提供,則可將該名稱指定為字符串常量 (@database_name_var = database name) 或字符串?dāng)?shù)據(jù)類型(ntext 或 text 數(shù)據(jù)類型除外)的變量。
backup_device > 指定備份操作時要使用的邏輯或物理備份設(shè)備??梢允窍铝幸环N或多種形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var }  是由 sp_addumpdevice 創(chuàng)建的備份設(shè)備的邏輯名稱,數(shù)據(jù)庫將備份到該設(shè)備中,其名稱必須遵守標(biāo)識符規(guī)則。如果將其作為變量 (@logical_backup_device_name_var) 提供,則可將該備份設(shè)備名稱指定為字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串?dāng)?shù)據(jù)類型(ntext 或 text 數(shù)據(jù)類型除外)的變量。
{ DISK | TAPE } =  'physical_backup_device_name' | @physical_backup_device_name_var  允許在指定的磁盤或磁帶設(shè)備上創(chuàng)建備份。在執(zhí)行 BACKUP 語句之前不必存在指定的物理設(shè)備。如果存在物理設(shè)備且 BACKUP 語句中沒有指定 INIT 選項,則備份將追加到該設(shè)備。  當(dāng)指定 TO DISK 或 TO TAPE 時,請輸入完整路徑和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。
說明  對于備份到磁盤的情況,如果輸入一個相對路徑名,備份文件將存儲到默認(rèn)的備份目錄中。該目錄在安裝時被設(shè)置并且存儲在 KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer 目錄下的 BackupDirectory 注冊表鍵值中。
如果使用的是具有統(tǒng)一命名規(guī)則 (UNC) 名稱的網(wǎng)絡(luò)服務(wù)器或已重新定向的驅(qū)動器號,則請指定磁盤的設(shè)備類型。
當(dāng)指定多個文件時,可以混合邏輯文件名(或變量)和物理文件名(或變量)。但是,所有的設(shè)備都必須為同一類型(磁盤、磁帶或管道)。
Windows 98 不支持備份到磁盤。
n 是表示可以指定多個備份設(shè)備的占位符。備份設(shè)備數(shù)目的上限為 64。
BLOCKSIZE = { blocksize | @blocksize_variable } 用字節(jié)數(shù)來指定物理塊的大小。在 Windows NT 系統(tǒng)上,默認(rèn)設(shè)置是設(shè)備的默認(rèn)塊大小。一般情況下,當(dāng) SQL Server 選擇適合于設(shè)備的塊大小時不需要此參數(shù)。在基于 Windows 2000 的計算機(jī)上,默認(rèn)設(shè)置是 65,536(64 KB,是 SQL Server 支持的最大大小)。
對于磁盤,BACKUP 自動決定磁盤設(shè)備合適的塊大小。
說明  如果要將結(jié)果備份集存儲到 CD-ROM 中然后從 CD-ROM 中恢復(fù),請將 BLOCKSIZE 設(shè)為 2048。 磁帶的默認(rèn) BLOCKSIZE 為 65,536 (64 KB)。顯式聲明塊大小將替代 SQL Server 選擇的塊大小。
DESCRIPTION = { 'text' | @text_variable } 指定描述備份集的自由格式文本。該字符串最長可以有 255 個字符。
DIFFERENTIAL 指定數(shù)據(jù)庫備份或文件備份應(yīng)該與上一次完整備份后改變的數(shù)據(jù)庫或文件部分保持一致。差異備份一般會比完整備份占用更少的空間。對于上一次完整備份時備份的全部單個日志,使用該選項可以不必再進(jìn)行備份。有關(guān)更多信息,請參見差異數(shù)據(jù)庫備份和文件差異備份。
說明  在進(jìn)行完整數(shù)據(jù)庫備份或差異備份時,SQL Server 備份足夠的事務(wù)日志,從而在恢復(fù)數(shù)據(jù)庫時生成一個一致的數(shù)據(jù)庫。
EXPIREDATE = { date | @date_var } 指定備份集到期和允許被重寫的日期。如果將該日期作為變量 (@date_var) 提供,則可以將該日期指定為字符串常量 (@date_var = date)、字符串?dāng)?shù)據(jù)類型變量(ntext 或 text 數(shù)據(jù)類型除外)、smalldatetime 或者 datetime 變量,并且該日期必須符合已配置的系統(tǒng) datetime 格式。
RETAINDAYS = { days | @days_var }  指定必須經(jīng)過多少天才可以重寫該備份媒體集。假如用變量 (@days_var) 指定,該變量必須為整型。
重要  假如 EXPIREDATE 或 RETAINDAYS 沒有指定,有效期將取決于 sp_configure 的 media retention 配置設(shè)置。這些選項僅僅阻止 SQL Server 重寫文件。用其它方法可擦除磁帶,而通過操作系統(tǒng)可以刪除磁盤文件。有關(guān)過期驗證的更多信息,請參見本主題的 SKIP 和 FORMAT。
PASSWORD = { password | @password_variable } 為備份集設(shè)置密碼。 PASSWORD 是一個字符串。如果為備份集定義了密碼,必須提供這個密碼才能對該備份集執(zhí)行任何還原操作。
重要  備份集密碼防止未經(jīng)授權(quán)即通過 SQL Server 2000 工具訪問備份集的內(nèi)容,但是不能防止重寫備份集。
有關(guān)使用密碼的更多信息,請參見"權(quán)限"部分。
FORMAT  指定應(yīng)將媒體頭寫入用于此備份操作的所有卷。任何現(xiàn)有的媒體頭都被重寫。FORMAT 選項使整個媒體內(nèi)容無效,并且忽略任何現(xiàn)有的內(nèi)容。
重要  使用 FORMAT 要謹(jǐn)慎。格式化一個備份設(shè)備或媒體將使整個媒體集不可用。例如,如果初始化現(xiàn)有條帶備份集中的單個磁帶,則整個備份集都將變得不可用。
通過指定 FORMAT,備份操作也就暗示了 SKIP 和 INIT;這些都不必顯式說明。
NOFORMAT 指定媒體頭不應(yīng)寫入所有用于該備份操作的卷中,并且不要重寫該備份設(shè)備除非指定了 INIT。
INIT 指定應(yīng)重寫所有備份集,但是保留媒體頭。如果指定了 INIT,將重寫那個設(shè)備上的所有現(xiàn)有的備份集數(shù)據(jù)。
當(dāng)遇到以下幾種情況之一時不重寫備份媒體:
媒體上的備份設(shè)置沒有全部過期。有關(guān)更多信息,請參見 EXPIREDATE 和 RETAINDAYS 選項。
如果 BACKUP 語句給出了備份集名,該備份集名與備份媒體上的名稱不匹配。有關(guān)更多信息,請參見 NAME 子句。
使用 SKIP 選項替代這些檢查。有關(guān)使用 SKIP、NOSKIP、INIT 和 NOINIT 時的相互作用關(guān)系的更多信息,請參見注釋部分。
說明  如果備份媒體有密碼保護(hù),SQL Server 將不寫入媒體,除非提供媒體密碼。SKIP 選項不替代此檢查。只有通過格式化才能重寫受密碼保護(hù)的媒體。有關(guān)更多信息,請參見 FORMAT 選項。
NOINIT 表示備份集將追加到指定的磁盤或磁帶設(shè)備上,以保留現(xiàn)有的備份集。NOINIT 是默認(rèn)設(shè)置。
RESTORE 命令的 FILE 選項用于在還原時選擇適當(dāng)?shù)膫浞菁S嘘P(guān)更多信息,請參見 RESTORE。
如果為媒體集定義了媒體密碼,則必須提供密碼。
MEDIADESCRIPTION = { text | @text_variable }
指明媒體集的自由格式文本描述,最多為 255 個字符。
MEDIADESCRIPTION = { text | @text_variable }
為整個備份媒體集指明媒體名,最多為 128 個字符。假如指定了 MEDIANAME,則它必須與以前指定的媒體名相匹配,該媒體名已存在于備份卷中。假如沒有指定 MEDIANAME,或指定了 SKIP 選項,將不會對媒體名進(jìn)行驗證檢查。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
為媒體集設(shè)置密碼。MEDIAPASSWORD 是一個字符串。
如果為媒體集定義了密碼,則在該媒體集上創(chuàng)建備份集時必須提供此密碼。另外,從該媒體集執(zhí)行任何還原操作時也必須提供媒體密碼。只有通過格式化才能重寫受密碼保護(hù)的媒體。有關(guān)更多信息,請參見 FORMAT 選項。
有關(guān)使用密碼的更多信息,請參見"權(quán)限"部分。
NAME = { backup_set_name | @backup_set_var }
指定備份集的名稱。名稱最長可達(dá) 128 個字符。假如沒有指定 NAME,它將為空。
NORECOVERY
只與 BACKUP LOG 一起使用。備份日志尾部并使數(shù)據(jù)庫處于正在還原的狀態(tài)。當(dāng)將故障轉(zhuǎn)移到輔助數(shù)據(jù)庫或在 RESTORE 操作前保存日志尾部時,NORECOVERY 很有用。
STANDBY = undo_file_name
只與 BACKUP LOG 一起使用。備份日志尾部并使數(shù)據(jù)庫處于只讀或備用模式。撤消文件名指定了容納回滾更改的存儲,如果隨后應(yīng)用 RESTORE LOG 操作,則必須撤消這些回滾更改。
如果指定的撤消文件名不存在,SQL Server 將創(chuàng)建該文件。如果該文件已存在,則 SQL Server 將重寫它。有關(guān)更多信息,請參見使用備用服務(wù)器。
NOREWIND
指定 SQL Server 在備份操作完成后使磁帶保持打開。NOREWIND 意即 NOUNLOAD。SQL Server 將保留磁帶驅(qū)動器的所有權(quán),直到 BACKUP或 RESTORE 命令使用 REWIND 為止。
如果無意中使磁帶處于打開狀態(tài),則釋放磁帶的最快方法是使用下面的 RESTORE 命令:
RESTORE LABELONLY FROM TAPE = name> WITH REWIND
通過查詢 master 數(shù)據(jù)庫中的 sysopentapes 表可以查找正在打開的磁帶列表。
REWIND
指定 SQL Server 將釋放磁帶和倒帶。如果 NOREWIND 和 REWIND 均未指定,則默認(rèn)設(shè)置為 REWIND。
NOSKIP
指示 BACKUP 語句在可以重寫媒體上的所有備份集之前先檢查它們的過期日期。
SKIP
禁用備份集過期和名稱檢查,這些檢查一般由 BACKUP 語句執(zhí)行以防重寫備份集。有關(guān)更多信息,請參見注釋部分。
NOUNLOAD
指定不在備份后從磁帶驅(qū)動器中自動卸載磁帶。設(shè)置始終為 NOUNLOAD,直到指定 UNLOAD 為止。該選項只用于磁帶設(shè)備。
UNLOAD
指定在備份完成后自動倒帶并卸載磁帶。啟動新用戶會話時其默認(rèn)設(shè)置為 UNLOAD。該設(shè)置一直保持到用戶指定了 NOUNLOAD 時為止。該選項只用于磁帶設(shè)備。
RESTART
指定 SQL Server 重新啟動一個被中斷的備份操作。因為 RESTART 選項在備份操作被中斷處重新啟動該操作,所以它節(jié)省了時間。若要重新啟動一個特定的備份操作,請重復(fù)整個 BACKUP 語句并且加入 RESTART 選項。不一定非要使用 RESTART 選項,但是它可以節(jié)省時間。
重要  該選項只用于導(dǎo)向磁帶媒體的備份和跨越了多個磁帶卷的備份。在備份的第一卷上永遠(yuǎn)不會有重新啟動操作。
STATS [= percentage]
每當(dāng)另一個 percentage 結(jié)束時顯示一條消息,它被用于測量進(jìn)度。如果省略 percentage,SQL Server 將每完成 10 個百分點顯示一條消息。
file_or_filegroup>
指定包含在數(shù)據(jù)庫備份中的文件或文件組的邏輯名。可以指定多個文件或文件組。
FILE = { logical_file_name | @logical_file_name_var }
給一個或多個包含在數(shù)據(jù)庫備份中的文件命名。
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
給一個或多個包含在數(shù)據(jù)庫備份中的文件組命名。
說明  當(dāng)數(shù)據(jù)庫的大小和性能要求使得進(jìn)行完整數(shù)據(jù)庫備份不切實際時,備份一個文件。若要單獨備份事務(wù)日志,請使用 BACKUP LOG。
重要  必須通過使用 BACKUP LOG 提供事務(wù)日志的單獨備份,才能使用文件和文件組備份來恢復(fù)數(shù)據(jù)庫。有關(guān)文件備份的更多信息,請參見備份使用文件備份。
如果恢復(fù)模型為 SIMPLE,則不允許文件和文件組備份。
n 是一個占位符,表示可以指定多個文件和文件組。對文件或文件組的最大個數(shù)沒有限制。
LOG 指定只備份事務(wù)日志。該日志是從上一次成功執(zhí)行了的 LOG 備份到當(dāng)前日志的末尾。一旦備份日志,可能會截斷復(fù)制或活動事務(wù)不再需要的空間。
說明  假如備份日志看來并沒有截斷大部分的日志,則有可能在日志中存在一個舊的開放事務(wù)??梢允褂?DBCC SQLPERF (LOGSPACE) 觀察日志空間。有關(guān)更多信息,請參見事務(wù)日志備份。
NO_LOG | TRUNCATE_ONLY
無須備份復(fù)制日志即刪除不活動的日志部分,并且截斷日志。該選項會釋放空間。因為并不保存日志備份,所以沒有必要指定備份設(shè)備。NO_LOG 和 TRUNCATE_ONLY 是同義的。
使用 NO_LOG 或 TRUNCATE_ONLY 備份日志后,記錄在日志中的更改不可恢復(fù)。為了恢復(fù),請立即執(zhí)行 BACKUP DATABASE。
NO_TRUNCATE 允許在數(shù)據(jù)庫損壞時備份日志。
注釋
可以將數(shù)據(jù)庫或日志備份追加到任何磁盤或磁帶設(shè)備上,從而使得數(shù)據(jù)庫和它的事務(wù)日志能存儲在一個物理位置中。
當(dāng)數(shù)據(jù)庫正在使用時,SQL Server 使用一個聯(lián)機(jī)備份過程來對數(shù)據(jù)庫進(jìn)行備份。下面的列表包括在數(shù)據(jù)庫或事務(wù)日志備份時無法進(jìn)行的操作:
在備份操作時允許進(jìn)行文件管理操作,如帶有 ADD FILE 或 REMOVE FILE 選項的 ALTER DATABASE 語句,以及 INSERT、UPDATE 或 DELETE 語句。
收縮數(shù)據(jù)庫或文件。這包括自動收縮操作。
假如在這些操作正在進(jìn)行時啟動備份,備份將終止。假如正在進(jìn)行備份時,試圖進(jìn)行這些操作,則操作會失敗。
只要操作系統(tǒng)支持?jǐn)?shù)據(jù)庫的排序規(guī)則,就可以在不同的平臺之間執(zhí)行備份操作,即使這些平臺使用不同的處理器類型。有關(guān)更多信息,請參見 SQL Server 排序規(guī)則基礎(chǔ)知識。
備份文件格式
因為 SQL Server 2000 的備份格式遵從 Microsoft 磁帶格式 (MTF),該格式與 Windows NT 磁帶備份所使用的格式相同,所以 SQL Server 備份可與 Windows NT 備份共存于磁帶媒體上。若要確保相互操作性,磁帶應(yīng)由 NTBackup 格式化。
備份類型
SQL Server 支持的備份類型包括:
完整數(shù)據(jù)庫備份,它備份包括事務(wù)日志的整個數(shù)據(jù)庫。
在完整數(shù)據(jù)庫備份之間執(zhí)行差異數(shù)據(jù)庫備份。
事務(wù)日志備份。
日志備份序列提供了連續(xù)的事務(wù)信息鏈,可支持從數(shù)據(jù)庫、差異或文件備份中快速恢復(fù)。
文件和文件組備份。
當(dāng)時間限制使得完整數(shù)據(jù)庫備份不切實際時,請使用 BACKUP 備份數(shù)據(jù)庫文件和文件組,而不是備份完整數(shù)據(jù)庫。若要備份一個文件而不是整個數(shù)據(jù)庫時,請合理安排步驟以確保數(shù)據(jù)庫中所有的文件按規(guī)則備份。同時必須進(jìn)行單獨的事務(wù)日志備份。在恢復(fù)一個文件備份后,使用事務(wù)日志將文件內(nèi)容前滾,使其與數(shù)據(jù)庫其余部分一致。
在條帶集中使用的備份設(shè)備必須一直在條帶集中使用(除非在某處用 FORMAT 重新初始化),而且設(shè)備數(shù)目不變。在備份設(shè)備已定義為條帶集的組成部分后,就不能用于單個設(shè)備備份,除非指定了 FORMAT。同樣,一個含有非條帶集備份的備份設(shè)備不能用于條帶集,除非指定了 FORMAT。使用 FORMAT 來分開條帶備份集。
如果寫入媒體頭時未指定 MEDIANAME 或 MEDIADESCRIPTION,則與空項對應(yīng)的媒體頭字段將為空。
如果恢復(fù)模型為 SIMPLE,則無法使用 BACKUP LOG。應(yīng)該使用 BACKUP DATABASE 來替代。
SKIP、NOSKIP、INIT 和 NOINIT 間的相互作用
下表說明 { INIT | NOINIT }和{ NOSKIP | SKIP } 子句間是如何相互作用的。
說明  在所有這些交互操作中,如果磁帶媒體為空或磁帶備份文件不存在,則寫入媒體頭并繼續(xù)。如果媒體頭不為空或不含有效的媒體頭,則指出這是無效的 MTF 媒體并取消備份。
  INIT NOINIT
SKIP 如果卷中包含有效的1 媒體頭,則驗證媒體密碼并重寫媒體上的全部備份集,僅保留媒體頭。
如果卷不含有效的媒體頭,則使用給定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION(若有)生成媒體頭。
如果卷中包含有效的媒體頭,則驗證媒體密碼并添加備份集,并保留所有現(xiàn)有備份集。
如果卷不含有效的媒體頭,則會出錯。
 
NOSKIP 如果該卷包含一個有效的媒體頭,將執(zhí)行以下檢查:
驗證媒體密碼。2
如果指定了 MEDIANAME,將驗證所給的媒體名是否匹配媒體頭的媒體名。
驗證媒體上沒有未過期的備份集。
如果有,將終止備份。
如果這些檢查都通過了,將重寫該媒體上一切備份集,只保留媒體頭。
如果卷不含有效的媒體頭,則使用給定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION(若有)生成媒體頭。
如果該卷包含一個有效的媒體頭,將驗證媒體密碼*并且驗證媒體是否名匹配所給的 MEDIANAME(假如有的話)。如果匹配,追加備份集,同時保留所有現(xiàn)有的備份集。
如果卷不含有效的媒體頭,則會出錯。
 
1. 有效性包括 MTF 版本號和其它標(biāo)題信息。如果不支持指定的版本或指定的版本不是期望值,將會發(fā)生錯誤。
2. 用戶必須屬于適當(dāng)?shù)墓潭〝?shù)據(jù)庫或服務(wù)器角色,并提供執(zhí)行備份操作所需的正確媒體密碼。
說明  為保持向后兼容性,在 BACKUP 語句的語法中可使用 DUMP 關(guān)鍵字替代 BACKUP 關(guān)鍵字。另外,可使用 TRANSACTION 關(guān)鍵字替代 LOG 關(guān)鍵字。
備份歷史表
SQL Server 使用以下的備份歷史表來跟蹤備份活動:
backupfile
backupmediafamily
backupmediaset
backupset
執(zhí)行 RESTORE 時,將修改備份歷史記錄表。
兼容性注意事項
注意  無法在早期 SQL Server 版本中還原使用 Microsoftreg; SQL Server™ 2000 創(chuàng)建的備份。
權(quán)限
BACKUP DATABASE 和 BACKUP LOG 權(quán)限默認(rèn)情況下授予 sysadmin 固定服務(wù)器角色和 db_owner 及 db_backupoperator 固定數(shù)據(jù)庫角色的成員。
此外,用戶可以為媒體集、備份集或兩者指定密碼。如果為媒體集指定了密碼,則用戶若只是適當(dāng)?shù)墓潭ǚ?wù)器和數(shù)據(jù)庫角色成員還不足以執(zhí)行備份。用戶還必須提供媒體密碼才能執(zhí)行這些操作。同樣,除非在還原命令中指定正確的媒體集密碼和備份集密碼,否則不能執(zhí)行還原操作。
在 BACKUP 語句中,定義備份集密碼和媒體集密碼為可選功能。使用密碼可防止利用 SQL Server 2000 工具未經(jīng)授權(quán)地執(zhí)行還原操作和在媒體中添加備份集,但是,密碼不能防止通過 FORMAT 選項重寫媒體。
因此,盡管使用密碼對防止利用 SQL Server 工具未經(jīng)授權(quán)地訪問媒體內(nèi)容有幫助,但密碼不能防止媒體內(nèi)容被破壞。密碼不能完全防止未經(jīng)授權(quán)地訪問媒體內(nèi)容,原因在于備份集中的數(shù)據(jù)沒有加密,理論上可以被專為此目的創(chuàng)建的程序所檢查。對于安全性至關(guān)重要的場合,防止未經(jīng)授權(quán)的個人訪問媒體非常重要。
為不是用相關(guān)密碼創(chuàng)建的對象指定密碼是錯誤的做法。
BACKUP 使用由 PASSWORD 選項提供的備份集密碼創(chuàng)建備份集。另外,BACKUP 正常情況下在寫入媒體之前驗證由 MEDIAPASSWORD 選項提供的媒體密碼。BACKUP 不驗證媒體密碼的唯一情況是當(dāng)格式化媒體時,這將重寫媒體頭。BACKUP 只在下列情況下格式化媒體:
如果指定了 FORMAT 選項。
如果媒體頭無效且指定了 INIT。
如果正在寫入延續(xù)卷。
如果 BACKUP 寫入媒體頭,BACKUP 將給 MEDIAPASSWORD 選項中指定的值指派媒體集密碼。
有關(guān)密碼對 SKIP、NOSKIP、INIT 和 NOINIT 選項的影響的更多信息,請參見注釋部分。
備份設(shè)備物理文件的所有權(quán)和權(quán)限問題可能會妨礙備份操作。SQL Server 必須能夠讀取并寫入設(shè)備;運行 SQL Server 服務(wù)的帳戶必須有寫入權(quán)限。但是,為設(shè)備在系統(tǒng)表中添加項目的 sp_addumpdevice 不檢查文件訪問權(quán)。備份設(shè)備物理文件的這些問題可能直到為備份或還原而訪問物理資源時才會出現(xiàn)。
示例
A. 備份整個 MyNwind 數(shù)據(jù)庫
說明  MyNwind 數(shù)據(jù)庫僅用于演示。
下例創(chuàng)建用于存放 MyNwind 數(shù)據(jù)庫完整備份的邏輯備份設(shè)備。
-- Create a logical backup device for the full MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_1',
   DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_1.dat'
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_1
B. 備份數(shù)據(jù)庫和日志
本例創(chuàng)建了一個數(shù)據(jù)庫和日志的完整備份。將數(shù)據(jù)庫備份到稱為 MyNwind_2 的邏輯備份設(shè)備上,然后將日志備份到稱為 MyNwindLog1 的邏輯備份設(shè)備上。
說明  創(chuàng)建邏輯備份設(shè)備需要一次完成。
-- Create the backup device for the full MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_2',
   'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_2.dat'
--Create the log backup device.
USE master
EXEC sp_addumpdevice 'disk', 'MyNwindLog1',
   'c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwindLog1.dat'
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_2
-- Update activity has occurred since the full database backup.
-- Back up the log of the MyNwind database.
BACKUP LOG MyNwind
   TO MyNwindLog1
使用SQL產(chǎn)生BCP命令快速備份/恢復(fù)你所有數(shù)據(jù)(僅用于Sybase和MS SQL Server數(shù)據(jù)庫)
  BCP命令是Sybase和MS SQL Server用來備份和恢復(fù)數(shù)據(jù)用的工具,它使用方便,備份/恢復(fù)速度快。當(dāng)Table過多時,編寫批處理是一件繁瑣的事情。可以使用下面方法快速生成BCP的批處理
select 'bcp database..' + name + ' out ' + '/data/' + name + '.out' + ' -n -Sservername -Usa -Pxxx' from database..sysobjects where type = 'U'
  將上面database換成自己需要備份的數(shù)據(jù)庫名稱,-Sservername改為對應(yīng)SQL Server名稱 -Pxxx 將xxx換成實際sa密碼,上面語法是用來備份數(shù)據(jù),將第一行中的out改為in即可生成恢復(fù)數(shù)據(jù)的批處理 以上可以在Sybase或MS SQL Server的ISQL中執(zhí)行(MS SQL Server 7.0中ISQL已變?yōu)镼uery Analyzer),然后將執(zhí)行結(jié)果通過剪貼板Copy到記事本(注意不要Copy結(jié)果集的標(biāo)題),保存為Bat文件。在執(zhí)行最后的Bat文件時,需要在Bat所在目錄建立Data子目錄,備份的*.out文件將存放在此子目錄下。 也可以通過PB的Database Administration中執(zhí)行(需要最后補(bǔ)充;號才可以執(zhí)行),然后將結(jié)果保存為Text類型,改名為Bat文件。

您可能感興趣的文章:
  • ThinkPHP框架實現(xiàn)的MySQL數(shù)據(jù)庫備份功能示例
  • SQL Server2012數(shù)據(jù)庫備份和還原的教程
  • 通過Windows批處理命令執(zhí)行SQL Server數(shù)據(jù)庫備份
  • sql server 2000數(shù)據(jù)庫備份還原的圖文教程
  • sql server 2005數(shù)據(jù)庫備份還原圖文教程
  • mysql數(shù)據(jù)庫備份命令分享(mysql壓縮數(shù)據(jù)庫備份)
  • mysql數(shù)據(jù)庫備份設(shè)置延時備份方法(mysql主從配置)
  • SQL SERVER 數(shù)據(jù)庫備份代碼實例

標(biāo)簽:文山 來賓 新鄉(xiāng) 濱州 黃山 東營 大同 池州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL SERVER 數(shù)據(jù)庫備份的三種策略及語句》,本文關(guān)鍵詞  SQL,SERVER,數(shù)據(jù)庫,備份,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL SERVER 數(shù)據(jù)庫備份的三種策略及語句》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL SERVER 數(shù)據(jù)庫備份的三種策略及語句的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    马关县| 荔浦县| 兴和县| 阆中市| 固始县| 阳曲县| 罗甸县| 徐州市| 迁安市| 大渡口区| 南京市| 武川县| 美姑县| 扎赉特旗| 都安| 贵南县| 仙桃市| 灵川县| 上犹县| 廊坊市| 合江县| 政和县| 大姚县| 彭阳县| 司法| 吴忠市| 淮南市| 七台河市| 西盟| 马尔康县| 乌鲁木齐县| 镇远县| 丰台区| 曲沃县| 扬中市| 沅陵县| 虹口区| 琼中| 东海县| 瑞金市| 门头沟区|