1.全量數據備份
備份整個數據庫,恢復時恢復全部。優勢是簡單,缺點是數據量太大,很是耗時sql
全數據庫備份由於容易實施,被許多系統優先採用。在一天或一週中預約的時間進行全數據庫備份使你不用動什麼腦筋。使用這種類型的備份帶來的問題是很是缺少靈活性,並且當數據庫被沖掉後,你面臨丟失大量數據的潛在威脅。例如,假設你天天在午夜備份數據庫。數據庫
若是服務器在晚上11點崩潰了,你將丟失前面23個小時對數據所作的所有修改。對大多數系統來講,這是沒法接受的。對此規則,爲數很少的例外以下:安全
1.系統中所存的數據能夠很容易地再建立。這類服務器中一個很好的例子是報表服務器,其中所存的全部數據都由一個批處理過程裝載的。若是這個數據庫被沖掉了,你只須要再運行一次這個批處理過程,全部數據就能夠恢復了。服務器
2.不常常修改的數據庫。一個例子是被收集存儲在數據中心或數據倉庫的歷史數據。一般,查詢這些數據以判斷趨勢,可是這些數據極少被修改。網絡
3.一個遙遠的站點,那裏不多或沒有數據庫管理員支持。這種類型的站點經常依靠沒受過足夠培訓的人來維持備份計劃,而且他還從事其餘工做。一般最好保證明施的備份計劃很是簡單,沒必要讓那些用戶監視和維護它。工具
4.系統中所存數據的重要性很低。一個很好的例子是開發用服務器。在這些類型的服務器上,開發者一般裝載一些舊的或假定的數據來測試應用程序。這類數據庫天天的備份是可接受的。性能
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.增量數據備份(Differential Backups)
所謂增量,就是以某個起始時間點的全量數據爲基礎,備份該時間點之後的數據。而起始時間點的全量數據,就是經過全量備份而爲的。
若是有人告訴你「每週一進行全量備份,天天進行一次增量備份。」,這就意味着,星期一做一次全量配份,造成一個起始時間點的全量數據;星期二備份星期一以來的數據;星期三也備份星期一以來的數據;.......星期天也備份星期一以來的數據。到第二週的星期一時,又執行一次全量配份,再開始新的備份週期。
若是要恢復星期三的數據,則要先恢復星期一的全量數據,而後再恢復在星期一到星期三之間的增量數據。
操作系統
增量備份是能用來幫助你實施備份計劃的最新技術。這種備份,像事務日誌備份同樣,只備份你上次全數據庫備份後所作的修改。與事務日誌備份不同的是這種備份不容許時間點恢復。它只容許你在實際所作的備份點上恢復。因此,這種備份一般要有事務日誌備份做爲補充。在下列狀況下,增量備份很是有用:
1.你想經過聯合使用全數據庫備份、增量備份和事務日誌備份最大程度地減小花費的時間。
2.數據庫的大小使常常作全數據庫備份很困難的狀況。
3.一個遙遠的站點,那裏不多或沒有數據庫管理員支持。這種類型的站點經常依靠沒受過足夠培訓的人來維持備份計劃,並且他還常常從事其餘工做。一般最好保證明施的備份計劃很是簡單,沒必要讓那些用戶監視和維護它。
4.系統中所存數據不是很是重要,因此所作的一些修改丟失後,不會致使災難性的後果。對於這種類型的系統,手工重建數據比創建一個事務日誌備份計劃更容易。
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.日誌備份
週一作一次全量數據備份,週二時備份 週一至週二 的日誌,週三時配份 週二至週三 的日誌......。
若要恢復週三的數據,則先恢復到週一的全量數據,再按 週一至週二的日誌、 週二至週三的日誌 進行數據庫操做
一個事務日誌備份只備份事務日誌中的信息。事務日誌備份必須與至少一次全數據庫備份聯用,這是由於若是恢復數據,必需要有一個開始點。事務日誌備份比全數據庫備份少花費許多資源,常常執行也容易多了。這實際上有兩個目的。首先是縮短了最後一次備份與服務器失敗之間的時間間隔,於是減小了數據損失。事務日誌備份還容許你實施一種特殊類型的恢復,即時間點恢復。這種類型的恢復容許你恢復數據到一個特定的時間點,好比到一次實際失敗發生前5分鐘時。
當某人所作的大量的數據修改或刪除要取消時,它顯得特別有用。你只需簡單地恢復數據庫到此次動做發生的時間點前。事務日誌恢復在下列狀況時很是有用:
1.數據庫被高頻率地修改。在發生大量的數據庫修改時,數據庫備份可能很快就過期了,若是把事務日誌備份和全數據庫備份聯繫起來使用,這些修改你都能記錄下來。
2.你想採起時間點恢復。像我前面提到的,時間點恢復是很是重要和有用的,你能夠經過事務日誌備份來實現。
3.不能接受丟失大量數據的狀況。在這種狀況下,你能夠天天作一個全數據庫備份,再每小時或更頻繁地作事務日誌備份。這將減小數據丟失量。
4.數據庫的大小使得常常作全數據庫備份很困難。例如,很是大的數據倉庫很容易達到上萬億字節。這種狀況下,你能夠作一次全數據庫備份,而後當數據修改時,再作一次事務日誌備份。
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.增量數據備份與日誌備份相結合
sql語句:
備份整個數據庫:
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 ] ]
]
備份一個事務日誌:
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 }
}
截斷事務日誌:
BACKUP LOG { database_name | @database_name_var }
{ [ WITH
{ NO_LOG | TRUNCATE_ONLY } ] }
參數
DATABASE 指定一個完整的數據庫備份。假如指定了一個文件和文件組的列表,那麼僅有這些被指定的文件和文件組被備份。
說明 在進行完整數據庫備份或差別數據庫備份時,Microsoft® SQL Server™ 備份足夠的事務日誌,以生成一個將在還原數據庫時使用的一致的數據庫。在 master 數據庫上只能採用完整數據庫備份。
{ database_name | @database_name_var } 指定了一個數據庫,從該數據庫中對事務日誌、部分數據庫或完整的數據庫進行備份。若是做爲變量 (@database_name_var) 提供,則可將該名稱指定爲字符串常量 (@database_name_var = database name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
< backup_device > 指定備份操做時要使用的邏輯或物理備份設備。能夠是下列一種或多種形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var } 是由 sp_addumpdevice 建立的備份設備的邏輯名稱,數據庫將備份到該設備中,其名稱必須遵照標識符規則。若是將其做爲變量 (@logical_backup_device_name_var) 提供,則可將該備份設備名稱指定爲字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串數據類型(ntext 或 text 數據類型除外)的變量。
{ DISK | TAPE } = 'physical_backup_device_name' | @physical_backup_device_name_var 容許在指定的磁盤或磁帶設備上建立備份。在執行 BACKUP 語句以前沒必要存在指定的物理設備。若是存在物理設備且 BACKUP 語句中沒有指定 INIT 選項,則備份將追加到該設備。 當指定 TO DISK 或 TO TAPE 時,請輸入完整路徑和文件名。例如,DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。
說明 對於備份到磁盤的狀況,若是輸入一個相對路徑名,備份文件將存儲到默認的備份目錄中。該目錄在安裝時被設置而且存儲在 KEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer 目錄下的 BackupDirectory 註冊表鍵值中。
若是使用的是具備統一命名規則 (UNC) 名稱的網絡服務器或已從新定向的驅動器號,則請指定磁盤的設備類型。
當指定多個文件時,能夠混合邏輯文件名(或變量)和物理文件名(或變量)。可是,全部的設備都必須爲同一類型(磁盤、磁帶或管道)。
Windows 98 不支持備份到磁盤。
n 是表示能夠指定多個備份設備的佔位符。備份設備數目的上限爲 64。
BLOCKSIZE = { blocksize | @blocksize_variable } 用字節數來指定物理塊的大小。在 Windows NT 系統上,默認設置是設備的默認塊大小。通常狀況下,當 SQL Server 選擇適合於設備的塊大小時不須要此參數。在基於 Windows 2000 的計算機上,默認設置是 65,536(64 KB,是 SQL Server 支持的最大大小)。
對於磁盤,BACKUP 自動決定磁盤設備合適的塊大小。
說明 若是要將結果備份集存儲到 CD-ROM 中而後從 CD-ROM 中恢復,請將 BLOCKSIZE 設爲 2048。 磁帶的默認 BLOCKSIZE 爲 65,536 (64 KB)。顯式聲明塊大小將替代 SQL Server 選擇的塊大小。
DESCRIPTION = { 'text' | @text_variable } 指定描述備份集的自由格式文本。該字符串最長能夠有 255 個字符。
DIFFERENTIAL 指定數據庫備份或文件備份應該與上一次完整備份後改變的數據庫或文件部分保持一致。差別備份通常會比完整備份佔用更少的空間。對於上一次完整備份時備份的所有單個日誌,使用該選項能夠沒必要再進行備份。有關更多信息,請參見差別數據庫備份和文件差別備份。
說明 在進行完整數據庫備份或差別備份時,SQL Server 備份足夠的事務日誌,從而在恢復數據庫時生成一個一致的數據庫。
EXPIREDATE = { date | @date_var } 指定備份集到期和容許被重寫的日期。若是將該日期做爲變量 (@date_var) 提供,則能夠將該日期指定爲字符串常量 (@date_var = date)、字符串數據類型變量(ntext 或 text 數據類型除外)、smalldatetime 或者 datetime 變量,而且該日期必須符合已配置的系統 datetime 格式。
RETAINDAYS = { days | @days_var } 指定必須通過多少天才能夠重寫該備份媒體集。假如用變量 (@days_var) 指定,該變量必須爲整型。
重要 假如 EXPIREDATE 或 RETAINDAYS 沒有指定,有效期將取決於 sp_configure 的 media retention 配置設置。這些選項僅僅阻止 SQL Server 重寫文件。用其它方法可擦除磁帶,而經過操做系統能夠刪除磁盤文件。有關過時驗證的更多信息,請參見本主題的 SKIP 和 FORMAT。
PASSWORD = { password | @password_variable } 爲備份集設置密碼。 PASSWORD 是一個字符串。若是爲備份集定義了密碼,必須提供這個密碼才能對該備份集執行任何還原操做。
重要 備份集密碼防止未經受權即經過 SQL Server 2000 工具訪問備份集的內容,可是不能防止重寫備份集。
有關使用密碼的更多信息,請參見"權限"部分。
FORMAT 指定應將媒體頭寫入用於此備份操做的全部卷。任何現有的媒體頭都被重寫。FORMAT 選項使整個媒體內容無效,而且忽略任何現有的內容。
重要 使用 FORMAT 要謹慎。格式化一個備份設備或媒體將使整個媒體集不可用。例如,若是初始化現有條帶備份集中的單個磁帶,則整個備份集都將變得不可用。
經過指定 FORMAT,備份操做也就暗示了 SKIP 和 INIT;這些都沒必要顯式說明。
NOFORMAT 指定媒體頭不該寫入全部用於該備份操做的卷中,而且不要重寫該備份設備除非指定了 INIT。
INIT 指定應重寫全部備份集,可是保留媒體頭。若是指定了 INIT,將重寫那個設備上的全部現有的備份集數據。
當遇到如下幾種狀況之一時不重寫備份媒體:
媒體上的備份設置沒有所有過時。有關更多信息,請參見 EXPIREDATE 和 RETAINDAYS 選項。
若是 BACKUP 語句給出了備份集名,該備份集名與備份媒體上的名稱不匹配。有關更多信息,請參見 NAME 子句。
使用 SKIP 選項替代這些檢查。有關使用 SKIP、NOSKIP、INIT 和 NOINIT 時的相互做用關係的更多信息,請參見注釋部分。
說明 若是備份媒體有密碼保護,SQL Server 將不寫入媒體,除非提供媒體密碼。SKIP 選項不替代此檢查。只有經過格式化才能重寫受密碼保護的媒體。有關更多信息,請參見 FORMAT 選項。
NOINIT 表示備份集將追加到指定的磁盤或磁帶設備上,以保留現有的備份集。NOINIT 是默認設置。
RESTORE 命令的 FILE 選項用於在還原時選擇適當的備份集。有關更多信息,請參見 RESTORE。
若是爲媒體集定義了媒體密碼,則必須提供密碼。
MEDIADESCRIPTION = { text | @text_variable }
指明媒體集的自由格式文本描述,最多爲 255 個字符。
MEDIADESCRIPTION = { text | @text_variable }
爲整個備份媒體集指明媒體名,最多爲 128 個字符。假如指定了 MEDIANAME,則它必須與之前指定的媒體名相匹配,該媒體名已存在於備份卷中。假如沒有指定 MEDIANAME,或指定了 SKIP 選項,將不會對媒體名進行驗證檢查。
MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
爲媒體集設置密碼。MEDIAPASSWORD 是一個字符串。
若是爲媒體集定義了密碼,則在該媒體集上建立備份集時必須提供此密碼。另外,從該媒體集執行任何還原操做時也必須提供媒體密碼。只有經過格式化才能重寫受密碼保護的媒體。有關更多信息,請參見 FORMAT 選項。
有關使用密碼的更多信息,請參見"權限"部分。
NAME = { backup_set_name | @backup_set_var }
指定備份集的名稱。名稱最長可達 128 個字符。假如沒有指定 NAME,它將爲空。
NORECOVERY
只與 BACKUP LOG 一塊兒使用。備份日誌尾部並使數據庫處於正在還原的狀態。當將故障轉移到輔助數據庫或在 RESTORE 操做前保存日誌尾部時,NORECOVERY 頗有用。
STANDBY = undo_file_name
只與 BACKUP LOG 一塊兒使用。備份日誌尾部並使數據庫處於只讀或備用模式。撤消文件名指定了容納回滾更改的存儲,若是隨後應用 RESTORE LOG 操做,則必須撤消這些回滾更改。
若是指定的撤消文件名不存在,SQL Server 將建立該文件。若是該文件已存在,則 SQL Server 將重寫它。有關更多信息,請參見使用備用服務器。
NOREWIND
指定 SQL Server 在備份操做完成後使磁帶保持打開。NOREWIND 意即 NOUNLOAD。SQL Server 將保留磁帶驅動器的全部權,直到 BACKUP或 RESTORE 命令使用 REWIND 爲止。
若是無心中使磁帶處於打開狀態,則釋放磁帶的最快方法是使用下面的 RESTORE 命令:
RESTORE LABELONLY FROM TAPE = <name> WITH REWIND
經過查詢 master 數據庫中的 sysopentapes 表能夠查找正在打開的磁帶列表。
REWIND
指定 SQL Server 將釋放磁帶和倒帶。若是 NOREWIND 和 REWIND 均未指定,則默認設置爲 REWIND。
NOSKIP
指示 BACKUP 語句在能夠重寫媒體上的全部備份集以前先檢查它們的過時日期。
SKIP
禁用備份集過時和名稱檢查,這些檢查通常由 BACKUP 語句執行以防重寫備份集。有關更多信息,請參見注釋部分。
NOUNLOAD
指定不在備份後從磁帶驅動器中自動卸載磁帶。設置始終爲 NOUNLOAD,直到指定 UNLOAD 爲止。該選項只用於磁帶設備。
UNLOAD
指定在備份完成後自動倒帶並卸載磁帶。啓動新用戶會話時其默認設置爲 UNLOAD。該設置一直保持到用戶指定了 NOUNLOAD 時爲止。該選項只用於磁帶設備。
RESTART
指定 SQL Server 從新啓動一個被中斷的備份操做。由於 RESTART 選項在備份操做被中斷處從新啓動該操做,因此它節省了時間。若要從新啓動一個特定的備份操做,請重複整個 BACKUP 語句而且加入 RESTART 選項。不必定非要使用 RESTART 選項,可是它能夠節省時間。
重要 該選項只用於導向磁帶媒體的備份和跨越了多個磁帶卷的備份。在備份的第一卷上永遠不會有從新啓動操做。
STATS [= percentage]
每當另外一個 percentage 結束時顯示一條消息,它被用於測量進度。若是省略 percentage,SQL Server 將每完成 10 個百分點顯示一條消息。
<file_or_filegroup>
指定包含在數據庫備份中的文件或文件組的邏輯名。能夠指定多個文件或文件組。
FILE = { logical_file_name | @logical_file_name_var }
給一個或多個包含在數據庫備份中的文件命名。
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
給一個或多個包含在數據庫備份中的文件組命名。
說明 當數據庫的大小和性能要求使得進行完整數據庫備份不切實際時,備份一個文件。若要單獨備份事務日誌,請使用 BACKUP LOG。
重要 必須經過使用 BACKUP LOG 提供事務日誌的單獨備份,才能使用文件和文件組備份來恢復數據庫。有關文件備份的更多信息,請參見備份使用文件備份。
若是恢復模型爲 SIMPLE,則不容許文件和文件組備份。
n 是一個佔位符,表示能夠指定多個文件和文件組。對文件或文件組的最大個數沒有限制。
LOG 指定只備份事務日誌。該日誌是從上一次成功執行了的 LOG 備份到當前日誌的末尾。一旦備份日誌,可能會截斷複製或活動事務再也不須要的空間。
說明 假如備份日誌看來並無截斷大部分的日誌,則有可能在日誌中存在一箇舊的開放事務。可使用 DBCC SQLPERF (LOGSPACE) 觀察日誌空間。有關更多信息,請參見事務日誌備份。
NO_LOG | TRUNCATE_ONLY
無須備份複製日誌即刪除不活動的日誌部分,而且截斷日誌。該選項會釋放空間。由於並不保存日誌備份,因此沒有必要指定備份設備。NO_LOG 和 TRUNCATE_ONLY 是同義的。
使用 NO_LOG 或 TRUNCATE_ONLY 備份日誌後,記錄在日誌中的更改不可恢復。爲了恢復,請當即執行 BACKUP DATABASE。
NO_TRUNCATE 容許在數據庫損壞時備份日誌。
註釋
能夠將數據庫或日誌備份追加到任何磁盤或磁帶設備上,從而使得數據庫和它的事務日誌能存儲在一個物理位置中。
當數據庫正在使用時,SQL Server 使用一個聯機備份過程來對數據庫進行備份。下面的列表包括在數據庫或事務日誌備份時沒法進行的操做:
在備份操做時容許進行文件管理操做,如帶有 ADD FILE 或 REMOVE FILE 選項的 ALTER DATABASE 語句,以及 INSERT、UPDATE 或 DELETE 語句。
收縮數據庫或文件。這包括自動收縮操做。
假如在這些操做正在進行時啓動備份,備份將終止。假如正在進行備份時,試圖進行這些操做,則操做會失敗。
只要操做系統支持數據庫的排序規則,就能夠在不一樣的平臺之間執行備份操做,即便這些平臺使用不一樣的處理器類型。有關更多信息,請參見 SQL Server 排序規則基礎知識。
備份文件格式
由於 SQL Server 2000 的備份格式聽從 Microsoft 磁帶格式 (MTF),該格式與 Windows NT 磁帶備份所使用的格式相同,因此 SQL Server 備份可與 Windows NT 備份共存於磁帶媒體上。若要確保相互操做性,磁帶應由 NTBackup 格式化。
備份類型
SQL Server 支持的備份類型包括:
完整數據庫備份,它備份包括事務日誌的整個數據庫。
在完整數據庫備份之間執行差別數據庫備份。
事務日誌備份。
日誌備份序列提供了連續的事務信息鏈,可支持從數據庫、差別或文件備份中快速恢復。
文件和文件組備份。
當時間限制使得完整數據庫備份不切實際時,請使用 BACKUP 備份數據庫文件和文件組,而不是備份完整數據庫。若要備份一個文件而不是整個數據庫時,請合理安排步驟以確保數據庫中全部的文件按規則備份。同時必須進行單獨的事務日誌備份。在恢復一個文件備份後,使用事務日誌將文件內容前滾,使其與數據庫其他部分一致。
在條帶集中使用的備份設備必須一直在條帶集中使用(除非在某處用 FORMAT 從新初始化),並且設備數目不變。在備份設備已定義爲條帶集的組成部分後,就不能用於單個設備備份,除非指定了 FORMAT。一樣,一個含有非條帶集備份的備份設備不能用於條帶集,除非指定了 FORMAT。使用 FORMAT 來分開條帶備份集。
若是寫入媒體頭時未指定 MEDIANAME 或 MEDIADESCRIPTION,則與空項對應的媒體頭字段將爲空。
若是恢復模型爲 SIMPLE,則沒法使用 BACKUP LOG。應該使用 BACKUP DATABASE 來替代。
SKIP、NOSKIP、INIT 和 NOINIT 間的相互做用
下表說明 { INIT | NOINIT }和{ NOSKIP | SKIP } 子句間是如何相互做用的。
說明 在全部這些交互操做中,若是磁帶媒體爲空或磁帶備份文件不存在,則寫入媒體頭並繼續。若是媒體頭不爲空或不含有效的媒體頭,則指出這是無效的 MTF 媒體並取消備份。
INIT NOINIT
SKIP 若是卷中包含有效的1 媒體頭,則驗證媒體密碼並重寫媒體上的所有備份集,僅保留媒體頭。
若是卷不含有效的媒體頭,則使用給定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION(如有)生成媒體頭。
若是卷中包含有效的媒體頭,則驗證媒體密碼並添加備份集,並保留全部現有備份集。
若是卷不含有效的媒體頭,則會出錯。
NOSKIP 若是該捲包含一個有效的媒體頭,將執行如下檢查:
驗證媒體密碼。2
若是指定了 MEDIANAME,將驗證所給的媒體名是否匹配媒體頭的媒體名。
驗證媒體上沒有未過時的備份集。
若是有,將終止備份。
若是這些檢查都經過了,將重寫該媒體上一切備份集,只保留媒體頭。
若是卷不含有效的媒體頭,則使用給定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION(如有)生成媒體頭。
若是該捲包含一個有效的媒體頭,將驗證媒體密碼*而且驗證媒體是否名匹配所給的 MEDIANAME(假若有的話)。若是匹配,追加備份集,同時保留全部現有的備份集。
若是卷不含有效的媒體頭,則會出錯。
1. 有效性包括 MTF 版本號和其它標題信息。若是不支持指定的版本或指定的版本不是指望值,將會發生錯誤。
2. 用戶必須屬於適當的固定數據庫或服務器角色,並提供執行備份操做所需的正確媒體密碼。
說明 爲保持向後兼容性,在 BACKUP 語句的語法中可以使用 DUMP 關鍵字替代 BACKUP 關鍵字。另外,可以使用 TRANSACTION 關鍵字替代 LOG 關鍵字。
備份歷史表
SQL Server 使用如下的備份歷史表來跟蹤備份活動:
backupfile
backupmediafamily
backupmediaset
backupset
執行 RESTORE 時,將修改備份歷史記錄表。
兼容性注意事項
注意 沒法在早期 SQL Server 版本中還原使用 Microsoft® SQL Server™ 2000 建立的備份。
權限
BACKUP DATABASE 和 BACKUP LOG 權限默認狀況下授予 sysadmin 固定服務器角色和 db_owner 及 db_backupoperator 固定數據庫角色的成員。
此外,用戶能夠爲媒體集、備份集或二者指定密碼。若是爲媒體集指定了密碼,則用戶若只是適當的固定服務器和數據庫角色成員還不足以執行備份。用戶還必須提供媒體密碼才能執行這些操做。一樣,除非在還原命令中指定正確的媒體集密碼和備份集密碼,不然不能執行還原操做。
在 BACKUP 語句中,定義備份集密碼和媒體集密碼爲可選功能。使用密碼可防止利用 SQL Server 2000 工具未經受權地執行還原操做和在媒體中添加備份集,可是,密碼不能防止經過 FORMAT 選項重寫媒體。
所以,儘管使用密碼對防止利用 SQL Server 工具未經受權地訪問媒體內容有幫助,但密碼不能防止媒體內容被破壞。密碼不能徹底防止未經受權地訪問媒體內容,緣由在於備份集中的數據沒有加密,理論上能夠被專爲此目的建立的程序所檢查。對於安全性相當重要的場合,防止未經受權的我的訪問媒體很是重要。
爲不是用相關密碼建立的對象指定密碼是錯誤的作法。
BACKUP 使用由 PASSWORD 選項提供的備份集密碼建立備份集。另外,BACKUP 正常狀況下在寫入媒體以前驗證由 MEDIAPASSWORD 選項提供的媒體密碼。BACKUP 不驗證媒體密碼的惟一狀況是當格式化媒體時,這將重寫媒體頭。BACKUP 只在下列狀況下格式化媒體:
若是指定了 FORMAT 選項。
若是媒體頭無效且指定了 INIT。
若是正在寫入延續卷。
若是 BACKUP 寫入媒體頭,BACKUP 將給 MEDIAPASSWORD 選項中指定的值指派媒體集密碼。
有關密碼對 SKIP、NOSKIP、INIT 和 NOINIT 選項的影響的更多信息,請參見注釋部分。
備份設備物理文件的全部權和權限問題可能會妨礙備份操做。SQL Server 必須可以讀取並寫入設備;運行 SQL Server 服務的賬戶必須有寫入權限。可是,爲設備在系統表中添加項目的 sp_addumpdevice 不檢查文件訪問權。備份設備物理文件的這些問題可能直到爲備份或還原而訪問物理資源時纔會出現。
示例
A. 備份整個 MyNwind 數據庫
說明 MyNwind 數據庫僅用於演示。
下例建立用於存放 MyNwind 數據庫完整備份的邏輯備份設備。
-- 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. 備份數據庫和日誌
本例建立了一個數據庫和日誌的完整備份。將數據庫備份到稱爲 MyNwind_2 的邏輯備份設備上,而後將日誌備份到稱爲 MyNwindLog1 的邏輯備份設備上。
說明 建立邏輯備份設備須要一次完成。
-- 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產生BCP命令快速備份/恢復你全部數據(僅用於Sybase和MS SQL Server數據庫)
BCP命令是Sybase和MS SQL Server用來備份和恢復數據用的工具,它使用方便,備份/恢復速度快。當Table過多時,編寫批處理是一件繁瑣的事情。可使用下面方法快速生成BCP的批處理
select 'bcp database..' + name + ' out ' + '/data/' + name + '.out' + ' -n -Sservername -Usa -Pxxx' from database..sysobjects where type = 'U'
將上面database換成本身須要備份的數據庫名稱,-Sservername改成對應SQL Server名稱 -Pxxx 將xxx換成實際sa密碼,上面語法是用來備份數據,將第一行中的out改成in便可生成恢復數據的批處理 以上能夠在Sybase或MS SQL Server的ISQL中執行(MS SQL Server 7.0中ISQL已變爲Query Analyzer),而後將執行結果經過剪貼板Copy到記事本(注意不要Copy結果集的標題),保存爲Bat文件。在執行最後的Bat文件時,須要在Bat所在目錄創建Data子目錄,備份的*.out文件將存放在此子目錄下。 也能夠經過PB的Database Administration中執行(須要最後補充;號才能夠執行),而後將結果保存爲Text類型,更名爲Bat文件。