BACKUP (Transact-SQL)
更新: 2006 年 12 月 12 日
備份完整資料庫,或是一或多個檔案或檔案群組 (BACKUP DATABASE)。同時,可在完整復原模式或大量記錄復原模式下備份交易記錄 (BACKUP LOG)。
語法
Backing Up a Whole Database
BACKUP DATABASE { database_name | @database_name_var }
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
Backing Up Specific Files or Filegroups
BACKUP DATABASE { database_name | @database_name_var }
<file_or_filegroup> [ ,...n ]
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
Creating a Partial Backup
BACKUP DATABASE { database_name | @database_name_var }
READ_WRITE_FILEGROUPS [ , <read_only_filegroup> [ ,...n ] ]
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
Backing Up the Transaction Log (full and bulk-logged recovery models)
BACKUP LOG { database_name | @database_name_var }
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ]
[;]
Truncating the Transaction Log (breaks the log chain)
BACKUP LOG { database_name | @database_name_var }
WITH { NO_LOG | TRUNCATE_ONLY }
[;]
<backup_device>::=
{
{ logical_device_name | @logical_device_name_var }
| { DISK | TAPE } =
{ 'physical_device_name' | @physical_device_name_var }
}
<MIRROR TO clause>::=
MIRROR TO <backup_device> [ ,...n ]
<file_or_filegroup>::=
{
FILE = { logical_file_name | @logical_file_name_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
<read_only_filegroup>::=
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
<general_WITH_options> [ ,...n ]::=
--Backup Set Options
COPY_ONLY
| DESCRIPTION = { 'text' | @text_variable }
| NAME = { backup_set_name | @backup_set_name_var }
| PASSWORD = { password | @password_variable }
| [ EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
| NO_LOG
--Media Set Options
{ NOINIT | INIT }
| { NOSKIP | SKIP }
| { NOFORMAT | FORMAT }
| MEDIADESCRIPTION = { 'text' | @text_variable }
| MEDIANAME = { media_name | @media_name_variable }
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| BLOCKSIZE = { blocksize | @blocksize_variable }
--Data Transfer Options
BUFFERCOUNT = { buffercount | @buffercount_variable }
| MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
--Error Management Options
{ NO_CHECKSUM | CHECKSUM }
| { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
--Compatibility Options
RESTART
--Monitoring Options
STATS [ = percentage ]
--Tape Options
{ REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }
--Log-specific Options
{ NORECOVERY | STANDBY = undo_file_name }
| NO_TRUNCATE
引數
DATABASE
指定完整的資料庫備份。如果指定了檔案和檔案群組清單,就只會備份這些檔案和檔案群組。在完整或差異資料庫備份期間,SQL Server 會備份足夠的交易記錄,以便在還原備份時,產生一致的資料庫。附註: master 資料庫只能執行完整資料庫備份。
LOG
指定只備份交易記錄。記錄的備份是從最後執行成功的記錄備份至目前的記錄結尾。您必須先建立完整備份,才能建立第一個記錄備份。附註: 在建立典型的記錄備份之後,有些交易記錄檔記錄會變成非使用中狀態,除非您指定 WITH NO_TRUNCATE 或 COPY_ONLY。當一或多個虛擬記錄檔案中的所有記錄變成非使用中狀態之後,記錄會發生截斷。如果記錄在例行的記錄備份之後並未截斷,可能會發生延遲記錄截斷。如需詳細資訊,請參閱<管理交易記錄>。
{ database_name| @database_name_var }
這是要備份交易記錄、部分資料庫或完整資料庫的來源資料庫。如果此名稱是以變數 (@database_name_var) 的方式來提供,則除了 ntext 或 text 資料類型之外,您可以將這個名稱指定為字串常數 (@database_name_var= 資料庫名稱),或指定為字元字串資料類型的變數。附註: 資料庫鏡像合作關係中的鏡像資料庫無法備份。
<file_or_filegroup> [ ,...n ]
只能搭配 BACKUP DATABASE 使用,可用來指定要包含在檔案備份中的資料庫檔案或檔案群組,或是指定要包含在部分備份中的唯讀檔案或檔案群組。- FILE ={ logical_file_name| **@**logical_file_name_var }
這是指要包含在備份中的檔案邏輯名稱,或是其值等於該檔案邏輯名稱的變數。
FILEGROUP = { logical_filegroup_name| **@**logical_filegroup_name_var }
這是指要包含在備份中的檔案群組邏輯名稱,或是其值等於該檔案群組邏輯名稱的變數。在簡單復原模式之下,只允許唯讀檔案群組使用檔案群組備份。附註: 當資料庫備份因資料庫大小和效能需求而不可行時,請考慮使用檔案備份。
- n
這是一個預留位置,表示可以在逗號分隔清單中指定多個檔案和檔案群組。數目沒有限制。
如需詳細資訊,請參閱<完整檔案備份>和<如何:備份檔案和檔案群組 (Transact-SQL)>。
- FILE ={ logical_file_name| **@**logical_file_name_var }
READ_WRITE_FILEGROUPS [ , FILEGROUP = { logical_filegroup_name| **@**logical_filegroup_name_var } [ ,...n ] ]
指定部分備份。部分備份會包含資料庫中所有的讀取/寫入檔案:主要檔案群組和任何一種讀取/寫入次要檔案群組,以及任何指定的唯讀檔案或檔案群組。READ_WRITE_FILEGROUPS
指定要在部分備份進行備份的所有讀取/寫入檔案群組。如果資料庫是唯讀的,READ_WRITE_FILEGROUPS 只會包括主要檔案群組。重要事項: 使用 FILEGROUP 取代 READ_WRITE_FILEGROUPS 來明確列出讀取/寫入檔案群組,以建立檔案備份。
- FILEGROUP = { logical_filegroup_name| **@**logical_filegroup_name_var }
這是指要包含在部分備份中的唯讀檔案群組邏輯名稱,或是其值等於該唯讀檔案群組邏輯名稱的變數。如需詳細資訊,請參閱本主題前面的「<file_or_filegroup>」。
- n
這是一個預留位置,表示可以在逗號分隔清單中指定多個唯讀檔案群組。
如需有關部分備份的詳細資訊,請參閱<部分備份>。
TO <backup_device> [ ,...n]
指出隨附的備份裝置集是未鏡像的媒體集,或是鏡像媒體集內的第一個鏡像 (如果宣告了一或多個 MIRROR TO 子句的話)。<backup_device>
指定備份作業要用的邏輯或實體備份裝置。- { logical_device_name | @logical_device_name_var }
這是用來備份資料庫的備份裝置 (sp_addumpdevice 所建立) 之邏輯名稱。邏輯名稱必須遵照識別碼的規則。如果備份裝置名稱是以變數 (@logical_device_name_var) 的方式來提供,則除了 ntext 或 text 資料類型之外,您可以將這個名稱指定為字串常數 (@logical_device_name_var= 邏輯備份裝置名稱),或指定為字元字串資料類型的變數。
{ DISK | TAPE } = { 'physical_device_name' | **@**physical_device_name_var }
指定磁碟檔案或磁帶裝置。在執行 BACKUP 陳述式之前,指定的裝置不需要存在。如果實體裝置存在,且 BACKUP 陳述式並未指定 INIT 選項,就會將備份附加至裝置中。如需詳細資訊,請參閱<備份裝置>。
- { logical_device_name | @logical_device_name_var }
- n
這是一個預留位置,表示可以在逗號分隔清單中指定最多達 64 個備份裝置。
MIRROR TO <backup_device> [ ,...n]
指定包含一或多個備份裝置的集合,這個裝置集合會鏡像 TO 子句所指定的備份裝置。MIRROR TO 子句和 TO 子句必須指定相同類型和數量的備份裝置。最大 MIRROR TO 子句數目是 3。這個選項只有在 SQL Server 2005 Enterprise Edition 和更新的版本上才提供。
附註: 如果 MIRROR TO = DISK,BACKUP 會自動判斷磁碟裝置的適當區塊大小。如需有關區塊大小的詳細資訊,請參閱這份資料表稍後的 "BLOCKSIZE"。 - <backup_device>
請參閱本節前面的「<backup_device>」。
- n
這是一個預留位置,表示可以在逗號分隔清單中指定最多達 64 個備份裝置。MIRROR TO 子句中的裝置數目必須等於 TO 子句中的裝置數目。
- <backup_device>
- [ next-mirror-to ]
這是一個預留位置,表示單一 BACKUP 陳述式除了可以包含單一 TO 子句,還可以包含最多 3 個 MIRROR TO 子句。
WITH 選項
指定要搭配備份作業使用的選項。
DIFFERENTIAL
只能搭配 BACKUP DATABASE 使用,可用來指定資料庫或檔案備份應該只含有資料庫或檔案在前次完整備份之後又變更過的部分。差異備份所用的空間,通常會比完整備份少。使用這個選項,便不需要套用自前次完整備份之後所執行的所有個別記錄備份。附註: 根據預設,BACKUP DATABASE 會建立完整備份。 如需詳細資訊,請參閱<使用差異備份>。
備份組選項
這些選項會處理這個備份作業所建立的備份組。
附註: |
---|
若要指定備份組以進行還原作業,請使用 FILE =<backup_set_file_number> 選項。如需有關如何指定備份組的詳細資訊,請參閱<RESTORE 引數 (Transact-SQL)>。 |
COPY_ONLY
指定備份為*「僅限複製備份」*,這不會影響正常的備份順序。僅限複製備份的建立與定期排程的傳統備份無關。僅限複製備份並不會影響資料庫的整體備份和還原程序。SQL Server 2005 所導入的僅限複製備份,適用於需要執行備份來達成特定用途的情況 (例如,在線上檔案還原之前備份記錄)。通常,僅限複製備份用過一次後便會刪除。
- 當搭配 BACKUP DATABASE 使用時,COPY_ONLY 選項會建立無法作為差異基底的完整備份。差異點陣圖不會更新,而且差異備份的行為會如同僅限複製備份並不存在。後續的差異備份會使用最新的傳統完整備份作為其基底。
重要事項: 如果 DIFFERENTIAL 和 COPY_ONLY 一起使用,則會忽略 COPY_ONLY,而建立差異備份。 - 當搭配 BACKUP LOG 使用時,COPY_ONLY 選項會建立*「僅限複製記錄備份」*,這不會截斷交易記錄。僅限複製記錄備份不會影響記錄鏈結,而且其他記錄備份的行為會如同僅限複製備份並不存在。
如需詳細資訊,請參閱<僅限複製備份>。
- 當搭配 BACKUP DATABASE 使用時,COPY_ONLY 選項會建立無法作為差異基底的完整備份。差異點陣圖不會更新,而且差異備份的行為會如同僅限複製備份並不存在。後續的差異備份會使用最新的傳統完整備份作為其基底。
- DESCRIPTION = { 'text' | **@**text_variable }
指定描述備份組的自由形式文字。這個字串最多可有 255 個字元。
- NAME = { backup_set_name| **@**backup_set_var }
指定備份組的名稱。名稱最多可有 128 個字元。如果未指定 NAME,它就是空白。
PASSWORD = { password | **@**password_variable }
設定備份組的密碼。PASSWORD 是一個字元字串。如果定義了備份組的密碼,您就必須提供密碼,才能從備份組中執行任何 SQL Server 還原作業。不過,備份組密碼並不會保護備份檔免於遭到覆寫。若要防止備份檔遭到覆寫,請改用媒體集密碼 (請參閱這份資料表稍後的 MEDIAPASSWORD 選項) (如需有關使用密碼的詳細資訊,請參閱這個主題稍後的<權限>一節)。安全性注意事項: 這個密碼所提供的保護很弱。它的目的是避免授權或為授權的使用者使用 SQL Server 2005 工具進行不正確的還原。它無法預防使用其他方式或以取代密碼的方式來讀取備份資料。保護備份的最佳作法是將備份磁帶存放在安全位置,或備份至適當的存取控制清單 (ACL) 所保護的磁碟檔案中。ACL 應該設在備份建立所在之根目錄下。 附註: 未來的 SQL Server 版本將移除 PASSWORD 選項。
[ EXPIREDATE =<date> | RETAINDAYS =<date> ]
指定何時可以覆寫這個備份的備份組。如果同時使用這兩個選項,RETAINDAYS 會優先於 EXPIREDATE。如果沒有指定任何選項,便會由 mediaretention 組態設定來決定到期日。如需詳細資訊,請參閱<設定伺服器組態選項>。
重要事項: 這些選項只會防止 SQL Server 覆寫檔案。您可以利用其他方法來清除磁帶,利用作業系統來刪除磁碟檔案。如需有關期限驗證的詳細資訊,請參閱這個主題中的 SKIP 和 FORMAT。 EXPIREDATE = { date | **@**date_var }
指定備份組到期且可加以覆寫的時間。如果這個日期是以變數 (@date_var) 的方式來提供,這個日期必須遵照設定的系統 datetime 格式,且必須指定成下列其中之一:- 字串常數 (@date_var = 日期)
- 字元字串資料類型的變數 (ntext 或 text 資料類型除外)
- smalldatetime
- datetime 變數
例如:
'Dec 31, 2020 11:59 PM'
'1/1/2021'
如需有關如何指定 datetime 值的詳細資訊,請參閱<字母日期格式>和<數值日期格式>。
附註: 若要忽略到期日,請使用 SKIP 選項。
- RETAINDAYS = { days| **@days_var }
指定必須經過多少天之後,才能覆寫這個備份媒體集。如果是以變數 (@**days_var) 的方式來提供,您必須將它指定成一個整數。
NO_LOG
在 BACKUP DATABASE 陳述式的內容中,指定備份將不會包含任何記錄。這等於是發行 SQL Server 2005 以前,過去建立檔案備份的方式。使用 NO_LOG 建立的資料庫備份,等於沒有包含任何記錄檔記錄的一組完整檔案備份。如果您需要快速備份資料,並且您具有關於該資料的完整記錄備份順序,在完整復原模式下使用 NO_LOG 會很有幫助。
媒體集選項
這些選項會處理整個媒體集。
{ NOINIT | INIT }
控制備份作業要覆寫或附加至備份媒體上的現有備份組。預設是附加至媒體上的最新備份組 (NOINIT)。附註: 如需有關 { NOINIT | INIT } 和 { NOSKIP | SKIP } 之間互動的詳細資訊,請參閱本主題後面的<備註>一節。 NOINIT
指出將備份組附加至指定的媒體集,保留現有的備份組。如果定義了媒體集的媒體密碼,您就必須提供密碼。NOINIT 是預設值。如需詳細資訊,請參閱<附加至現有備份組>。
INIT
指定應該覆寫所有備份組,但保留媒體標頭。如果指定 INIT,就會覆寫這個裝置中任何現有的備份組 (如果條件允許)。依預設,BACKUP 會檢查下列狀況,如果任何一種狀況存在,就不會覆寫備份媒體:- 有尚未到期的備份組。如需詳細資訊,請參閱 EXPIREDATE 和 RETAINDAYS 選項。
- BACKUP 陳述式所提供的備份組名稱 (如果提供的話) 不符合備份媒體中的名稱。如需詳細資訊,請參閱本節前面的 NAME 選項。
若要覆寫這些檢查,請使用 SKIP 選項。
附註: 如果備份媒體有密碼保護,除非提供媒體密碼,否則,SQL Server 不會寫入媒體。SKIP 選項不會覆寫這項檢查。有密碼保護的媒體只能藉由媒體重新格式化來覆寫,這會刪除媒體上的備份。如需有關媒體密碼的詳細資訊,請參閱本主題前面的「MEDIAPASSWORD」。如需有關重新格式化媒體的詳細資訊,請參閱本主題前面的「FORMAT」。 如需詳細資訊,請參閱<覆寫備份組>。
{ NOSKIP | SKIP }
控制備份作業在覆寫媒體上的備份組之前是否要先檢查備份組的到期日和時間。附註: 如需有關 { NOINIT | INIT } 和 { NOSKIP | SKIP } 之間互動的詳細資訊,請參閱本主題後面的<備註>一節。 - NOSKIP
指示 BACKUP 陳述式先檢查媒體中所有備份組的到期日,才允許覆寫它們。這是預設行為。
SKIP
停用通常是由 BACKUP 陳述式來執行的備份組期限和名稱的檢查,以防止覆寫備份組。如需有關 { INIT | NOINIT } 和 { NOSKIP | SKIP } 之間互動的詳細資訊,請參閱本主題後面的<備註>一節。若要檢視備份組的到期日,請查詢 backupset 歷程記錄資料表的 expiration_date 資料行。
- NOSKIP
{ NOFORMAT | FORMAT }
指定是否要將媒體標頭寫入這項備份作業所使用的磁碟區,以覆寫任何現有的媒體標頭和備份組。- NOFORMAT
指定備份作業保留這項備份作業所使用之媒體磁碟區上的現有媒體標頭和備份組。這是預設行為。
FORMAT
指定建立新的媒體集。FORMAT 會導致備份作業在備份作業使用的所有媒體磁碟區中寫入新的媒體標頭。磁碟區中的現有內容會變成無效,因為任何現有的媒體標頭和備份組都會遭到覆寫。重要事項: 請小心使用 FORMAT。格式化媒體集的任何磁碟區,會使得整個媒體集無法使用。例如,如果您初始化屬於現有等量媒體集的單一磁帶,整個媒體集都會變成無法使用。 指定 FORMAT 隱含 SKIP;您不需要明確指示 SKIP。
- NOFORMAT
- MEDIADESCRIPTION = { text | **@**text_variable }
指定媒體集自由形式的文字描述,最多 255 個字元。
- MEDIANAME = { media_name | **@**media_name_variable }
指定整個備份媒體集的媒體名稱。媒體名稱不能超出 128 個字元,如果指定 MEDIANAME 的話,它必須符合已在備份磁碟區中,先前所指定的媒體名稱。如果未指定的話,或指定了 SKIP 選項的話,就不會進行媒體名稱的驗證檢查。
MEDIAPASSWORD = { mediapassword | **@**mediapassword_variable }
設定媒體集的密碼。MEDIAPASSWORD 是一個字元字串。如果定義了媒體集的密碼,您就必須先提供密碼,之後,才能在這個媒體集上建立備份組。另外,您也必須提供媒體密碼,才能從媒體集中執行任何還原作業。有密碼保護的媒體只能藉由重新格式化來覆寫。如需詳細資訊,請參閱 FORMAT 選項。(如需有關使用密碼的詳細資訊,請參閱這個主題稍後的<權限>一節。)
安全性注意事項: 這個密碼所提供的保護很弱。它的目的是避免授權或為授權的使用者使用 SQL Server 2005 工具進行不正確的還原。它無法預防使用其他方式或以取代密碼的方式來讀取備份資料。保護備份的最佳作法是將備份磁帶存放在安全位置,或備份至適當的存取控制清單 (ACL) 所保護的磁碟檔案中。ACL 應該設在備份建立所在之根目錄下。 附註: 未來的 SQL Server 版本將移除 MEDIAPASSWORD 選項。
BLOCKSIZE = { blocksize | **@**blocksize_variable }
指定實體區塊大小 (以位元組為單位)。支援的大小為 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 位元組。磁帶裝置的預設值為 65536,其他裝置則為 512。一般而言這個選項是不必要的,因為 BACKUP 會自動選取裝置適用的區塊大小。明確指出區塊大小會覆寫自動選取的區塊大小。如果採用的備份是要複製到 CD-ROM 然後再從中還原,請指定 BLOCKSIZE=2048。
附註: 一般而言,只有在寫入磁帶裝置時,這個選項才會對效能造成影響。
資料傳送選項
BUFFERCOUNT = { buffercount | **@**buffercount_variable }
指定要用於備份作業的 I/O 緩衝區總數。您可以指定任何正整數,不過,緩衝區的數目很大時,可能會因為 Sqlservr.exe 處理序中的虛擬位址空間不足而造成「記憶體不足」錯誤。緩衝區使用的總空間可由下列公式判斷:buffercount*****maxtransfersize。
- MAXTRANSFERSIZE = { maxtransfersize | **@**maxtransfersize_variable }
以位元組為單位,指定要用於 SQL Server 和備份媒體之間的最大傳送單位。可能的值是 65536 位元組 (64 KB) 的倍數,最大可達 4194304 位元組 (4 MB)。
錯誤管理選項
這些選項可讓您決定備份作業是否要啟用備份總和檢查碼,以及作業在發生錯誤時是否要停止。
{ NO_CHECKSUM | CHECKSUM }
控制是否要啟用備份總和檢查碼。- NO_CHECKSUM
明確地停止產生備份總和檢查碼 (以及驗證頁面總和檢查碼)。這是預設行為。
CHECKSUM
啟用備份總和檢查碼,使 BACKUP 可以執行下列動作:- 將頁面寫入備份媒體之前,如果頁面中有這項資訊,BACKUP 會驗證頁面 (分頁的總和檢查碼或損毀頁)。
- 不論頁面總和檢查碼是否存在,BACKUP 都會產生備份資料流的個別備份總和檢查碼。還原作業可以選擇性地利用備份總和檢查碼來驗證備份有沒有損毀。備份總和檢查碼儲存在備份媒體中,而不是儲存在資料庫頁面中。在還原時,您可以選擇性地使用備份總和檢查碼。
使用備份總和檢查碼,可能會影響工作負載和備份的輸送量。
- NO_CHECKSUM
{ STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
控制備份作業在發生頁面總和檢查碼錯誤之後要停止或繼續。- STOP_ON_ERROR
指示 BACKUP 在頁面總和檢查碼未驗證時便失敗。這是預設行為。
CONTINUE_AFTER_ERROR
指示儘管發生總和檢查碼無效或損毀頁之類的錯誤,BACKUP 仍繼續作業。如果您在資料庫損毀時無法使用 NO_TRUNCATE 選項來備份記錄的結尾,您可以指定 CONTINUE_AFTER_ERROR 來取代 NO_TRUNCATE,嘗試進行結尾記錄備份。
- STOP_ON_ERROR
相容性選項
- RESTART
這個選項無效。這個版本接受這個選項的目的,是為了與舊版的 SQL Server 相容。
監視選項
STATS [ **=**percentage ]
每次另一個百分比完成時,便顯示一則訊息,用來量測進度。如果省略 percentage,每完成 10%,SQL Server 都會顯示一則訊息。STATS 選項報告到達下一個間隔之報告臨界值的完成百分比。大約會以指定的百分比為間隔;例如,當 STATS=10,如果完成的量是 40%,這個選項可能顯示 43%。對大型備份組而言,這不成問題,因為在已完成的 I/O 呼叫之間,百分比完成的移動非常緩慢。
磁帶選項
這些選項僅適用於「磁帶」裝置。如果所使用的不是磁帶裝置,將忽略這些選項。
{ REWIND | NOREWIND }
- REWIND
指定 SQL Server 將釋放和倒轉磁帶。REWIND 是預設值。
NOREWIND
指定 SQL Server 將會在備份作業之後,讓磁帶維持在開啟狀態。對磁帶執行多次備份作業時,可以使用這個選項來改進效能。NOREWIND 隱含 NOUNLOAD,而這些選項無法相容於單一的 BACKUP 陳述式。
附註: 如果您使用 NOREWIND,則 SQL Server 的執行個體會保有磁帶機的擁有權,直到在相同處理序中執行的 BACKUP 或 RESTORE 命令使用 REWIND 或 UNLOAD 選項,或是伺服器執行個體關閉為止。保留磁帶的開啟狀態,可以防止其他處理序存取這個磁帶。如需有關如何顯示開啟的磁帶清單及關閉開啟的磁帶之詳細資訊,請參閱<備份裝置>。
- REWIND
{ UNLOAD | NOUNLOAD }
附註: UNLOAD/NOUNLOAD 是工作階段設定,在工作階段的存留期間會一直保持不變,直到指定其他設定來進行重設為止。 - UNLOAD
指定在備份完成之後,便自動倒轉和卸載磁帶。UNLOAD 是在工作階段開始時的預設值。
- NOUNLOAD
指定在 BACKUP 作業之後,磁帶仍會在磁帶機上保持載入。
- UNLOAD
附註: |
---|
如果是使用磁帶備份裝置的備份作業,BLOCKSIZE 選項會影響備份作業的效能。一般而言,只有在寫入磁帶裝置時,這個選項才會對效能造成影響。 |
記錄特定選項
這些選項僅能搭配 BACKUP LOG 使用。
附註: |
---|
如果您不想要取得記錄備份,請使用簡單復原模式。如需詳細資訊,請參閱<簡單復原模式下的備份>。 |
{ NORECOVERY | STANDBY **=**undo_file_name }
NORECOVERY
它會備份記錄的結尾,資料庫會保留在 RESTORING 狀態。當進行容錯移轉,將工作交給次要資料庫時,或在 RESTORE 作業之前儲存記錄結尾時,NORECOVERY 非常有用。若要執行略過記錄截斷的最大速率記錄備份,再使資料庫自動進入 RESTORING 狀態,請同時使用 NO_TRUNCATE 和 NORECOVERY 選項。
STANDBY **=**standby_file_name
它會備份記錄的結尾,資料庫會保留唯讀和 STANDBY 狀態。STANDBY 子句會寫入待命資料 (執行回復,但使用進一步還原的選項)。使用 STANDBY 選項相當於使用 BACKUP LOG WITH NORECOVERY,後面接著 RESTORE WITH STANDBY。使用待命模式需要 standby_file_name 所指定的待命資料庫檔案,它的位置儲存在資料庫記錄中。如果指定的檔案已存在,Database Engine 會覆寫它;如果檔案不存在,Database Engine 會建立它。待命資料庫檔案會成為資料庫的一部分。
這個檔案會保留已回復的變更,如果後來要套用 RESTORE LOG 作業,就必須保留這些變更。您必須有足供待命資料庫檔案成長的磁碟空間,它才能夠包含資料庫中,因回復未認可的交易而修改過的所有相異頁面。
NO_TRUNCATE
它指定不截斷記錄,且使 Database Engine 不論資料庫狀態為何,都一律嘗試進行備份。因此,利用 NO_TRUNCATE 取得的備份可能會有不完整的中繼資料。在資料庫已損毀的情況下,您可以利用這個選項來進行記錄的備份。BACKUP LOG 的 NO_TRUNCATE 選項相當於同時指定 COPY_ONLY 和 CONTINUE_AFTER_ERROR。
當沒有 NO_TRUNCATE 選項時,資料庫必須在線上。
如果資料庫在 OFFLINE 或 EMERGENCY 狀態中,即使設定了 NO_TRUNCATE,也不允許 BACKUP。
[ NO_LOG | TRUNCATE_ONLY ]
附註: 未來的 SQL Server 版本將移除這個選項。請避免在新的開發工作中使用這個選項,對於目前在使用這個選項的應用程式,請規劃修改它。 只能用於 BACKUP LOG 陳述式,可執行檢查點手動強制截斷交易記錄。NO_LOG 和 TRUNCATE_ONLY 是同義字。您並不需要指定備份裝置,因為記錄並不會加以備份。
在簡單復原模式下,執行檢查點會移除非使用中的記錄部分,而不需製作備份副本。如此,捨棄使用中記錄以外的所有記錄,便會截斷記錄。這個選項會釋放空間,但可能會有資料遺失的風險。利用 NO_LOG 或 TRUNCATE_ONLY 來截斷記錄之後,記錄檔截斷部分中所記錄的變更必須等到下一次資料庫備份才可復原。因此,為了能夠復原,在使用上述任一選項之後,請立即執行 BACKUP DATABASE 來取得完整備份或差異資料庫備份。
注意: 我們建議您絕不要使用 NO_LOG 或 TRUNCATE_ONLY 手動截斷交易記錄,因為這麼做會中斷記錄鏈結。在下次進行完整或差異資料庫備份之前,無法保護資料庫免於媒體失敗。請只在非常特殊的情況下,才使用手動截斷記錄的方式,且要立即建立資料的備份。
備註
您可以將資料庫或記錄備份附加至任何磁碟或磁帶裝置,以便將資料庫及其交易記錄保留在單一實體位置中。
在明確或隱含的交易中,並不允許使用 BACKUP 陳述式。
只要作業系統支援資料庫的定序,便可以執行跨平台的備份作業,即使在不同類型的處理器之間,也是如此。
如需有關備份詞彙、備份裝置和管理備份的資訊,請參閱<在 SQL Server 中使用備份媒體>。
並行
SQL Server 利用線上備份處理序,使您能夠在使用資料庫時,備份資料庫。在備份期間,您可以執行大部分的作業;例如,在備份作業期間,您可以執行 INSERT、UPDATE 或 DELETE 陳述式。
資料庫或交易記錄備份期間所無法執行的作業包括:
- 檔案管理作業,例如,設定了 ADD FILE 或 REMOVE FILE 選項的 ALTER DATABASE 陳述式。
- 壓縮資料庫或壓縮檔案的作業。其中包括自動壓縮作業。
如果備份作業與檔案管理或壓縮作業重疊,便會發生衝突。不論是哪一項衝突作業在前面,第二項作業都會等待第一項作業所設定的鎖定逾時 (逾時期間由工作階段逾時設定來控制)。如果在逾時期間解除鎖定,第二項作業就會繼續下去。如果鎖定逾時,第二項作業就會失敗。
格式化備份媒體
只有下列其中一種情況成立,BACKUP 陳述式才會將備份媒體格式化:
- 指定了 FORMAT 選項。
- 媒體是空的。
- 作業正在寫入接續磁帶。
如需詳細資訊,請參閱<建立新的媒體集>。
備份類型
支援的備份類型需視資料庫的復原模式而定,如下所示:
所有復原模式都支援完整和差異的資料備份。
備份範圍 備份類型 整個資料庫
資料庫備份會包含整個資料庫。
部分資料庫
部分資料庫包含讀取/寫入檔案群組,可能的話,還會包含一或多個唯讀檔案或檔案群組。
檔案或檔案群組
檔案備份會包含一或多個檔案或檔案群組,而且只會用於包含多個檔案群組的資料庫。在簡單復原模式下,檔案備份基本上會限制用於唯讀的次要檔案群組。
在完整復原模式或大量記錄復原模式下,傳統備份也必須包含循序的*「交易記錄備份」* (或*「記錄備份」*)。每個記錄備份都包含建立備份時為使用中的交易記錄部分,而且會包含上一次記錄備份沒有備份的所有記錄檔記錄。
附註: 您必須先建立完整備份,才能建立第一個記錄備份。 如需詳細資訊,請參閱<使用交易記錄備份>。
*「僅限複製備份」*是特殊用途的完整備份或記錄備份,與傳統備份的正常順序無關。若要建立僅限複製備份,請在 BACKUP 陳述式中指定 COPY_ONLY 選項。如需詳細資訊,請參閱<僅限複製備份>。
備份全文檢索資料
在 SQL Server 2005 的完整資料庫備份期間,全文檢索資料會與其他資料庫資料一起備份。備份作業會將全文檢索目錄當做檔案來處理。例如,您可以利用 FILE= 子句來選取目錄,以個別備份目錄。(各個全文檢索目錄的邏輯檔案名稱形式是 sysft_
<catalog name>。)
在備份期間,目錄會進入唯讀模式中,因此,在備份完成之前,會暫停「編目」活動 (建立和維護全文檢索索引的程序)。
SKIP、NOSKIP、INIT 和 NOINIT 的互動
這個資料表說明 { NOINIT | INIT } 和 { NOSKIP | SKIP } 選項之間的互動方式。
附註: |
---|
如果磁帶媒體是空的,或磁碟備份檔案不存在,所有這些互動都會寫入媒體標頭,並繼續作業。如果媒體不是空的,但缺少有效媒體標頭,這些作業會回應指出這不是有效的 MTF 媒體,而且備份作業將會中止。 |
NOINIT | INIT | |
---|---|---|
NOSKIP |
如果磁碟區包含有效的媒體標頭,請驗證媒體密碼,如果有給定的 MEDIANAME,請確認媒體名稱與其相符。如果相符,請附加備份組,保留所有現有的備份組。 如果磁碟區並未包含有效的媒體標頭,便會發生錯誤。 |
如果磁碟區包含有效的媒體標頭,請執行下列檢查:
如果通過這些檢查,請覆寫媒體中的任何備份組,只保留媒體標頭。 當磁碟區並未包含有效媒體標頭時,如果有指定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION,請產生含有它們的媒體標頭。 |
SKIP |
如果磁碟區包含有效的媒體標頭,請驗證媒體密碼和附加備份組,保留所有現有的備份組。 |
如果磁碟區包含有效 1 的媒體標頭,請驗證媒體密碼和覆寫媒體中的任何備份組,只保留媒體標頭。 當媒體是空的,如果有指定 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION,請產生含有它們的媒體標頭。 |
1 有效性包括 MTF 版本號碼和其他標頭資訊。如果不支援指定的版本,或它不是預期的值,就會發生錯誤。
2 使用者必須屬於適當的固定資料庫或伺服器角色,且必須提供正確的媒體密碼來執行備份作業。
備份歷程記錄資料表
SQL Server 包括下列備份歷程記錄資料表,其會追蹤備份活動:
- backupfile (Transact-SQL)
- backupfilegroup (Transact-SQL)
- backupmediafamily (Transact-SQL)
- backupmediaset (Transact-SQL)
- backupset (Transact-SQL)
當執行還原時,如果備份組尚未記錄在 msdb 資料庫中,就表示備份歷程記錄資料表可能已修改過。
相容性支援
注意: |
---|
在較舊的 SQL Server 版本中,無法還原較新的 SQL Server 版本所建立的備份。 |
BACKUP 會支援下列關鍵字,以便讓較早的 SQL Server 版本具有回溯相容性:
- 接受 RESTART 選項以提供相容性,但是其在 SQL Server 2005 中沒有作用。
- 若要保留回溯相容性,您可以在 BACKUP 陳述式中使用 DUMP 關鍵字來取代 BACKUP 關鍵字。此外,您可以使用 TRANSACTION 關鍵字,而不要使用 LOG 關鍵字。SQL Server Database Engine 對 DUMP DATABASE 或 DUMP TRANSACTION 的解譯結果,分別相同於 BACKUP DATABASE 或 BACKUP LOG。
重要事項: 併入 DUMP 陳述式的目的,是為了與舊版相容。未來的 Microsoft SQL Server 發行版本將不再提供此功能。請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 請改用 BACKUP。
等量媒體集 (等量集) 中的備份裝置
「等量集」是指磁碟檔案的集合,在此集合中,資料會分成幾個區塊,並依照固定順序散佈。等量集中所使用的備份裝置數目必須維持相同 (除非您使用 FORMAT 重新初始化媒體)。
下列範例會將 AdventureWorks
資料庫的備份寫入使用三個磁碟檔案的新等量媒體集。
BACKUP DATABASE AdventureWorks
TO DISK='X:\SQLServerBackups\AdventureWorks1.bak',
DISK='Y:\SQLServerBackups\AdventureWorks2.bak',
DISK='Z:\SQLServerBackups\AdventureWorks3.bak'
WITH FORMAT,
MEDIANAME = 'AdventureWorksStripedSet0',
MEDIADESCRIPTION = 'Striped media set for AdventureWorks database;
GO
在備份裝置定義成等量集的一部分之後,除非指定 FORMAT,否則,單一裝置備份便無法使用它。同樣地,除非指定 FORMAT,否則,等量集也無法使用包含非等量備份的備份裝置。若要分割等量備份組,請使用 FORMAT。
當寫入媒體標頭時,如果既未指定 MEDIANAME,也未指定 MEDIADESCRIPTION,對應於空白項目的媒體標頭欄位就是空的。
使用鏡像媒體集
一般而言,備份並無鏡像,而且 BACKUP 陳述式只會包含 TO 子句。但是,每個媒體集總共可以包含四個鏡像。如果是鏡像媒體集,備份作業會寫入多個備份裝置群組。每個備份裝置群組都會在鏡像媒體集中包含單一鏡像。每個鏡像都必須使用相同數量和類型的實體備份裝置,而且必須全部具備相同的屬性。
若要備份鏡像媒體集,所有鏡像都必須存在。若要備份到鏡像媒體集,請指定 TO 子句來指定第一個鏡像,並且為每個其他鏡像指定 MIRROR TO 子句。
對於鏡像媒體集,每個 MIRROR TO 子句都必須列出與 TO 子句相同的裝置數目 (和類型)。下列範例會寫入含有兩個鏡像,且每個鏡像使用三個裝置的鏡像媒體集中:
BACKUP DATABASE AdventureWorks
TO DISK='X:\SQLServerBackups\AdventureWorks1a.bak',
DISK='Y:\SQLServerBackups\AdventureWorks2a.bak',
DISK='Z:\SQLServerBackups\AdventureWorks3a.bak'
MIRROR TO DISK='X:\SQLServerBackups\AdventureWorks1b.bak',
DISK='Y:\SQLServerBackups\AdventureWorks2b.bak',
DISK='Z:\SQLServerBackups\AdventureWorks3b.bak';
GO
重要事項: |
---|
這個範例的設計,是為了讓您在本機系統中進行測試。實際上,在相同磁碟機上備份多個裝置可能會降低效能,而且可能會減損鏡像媒體集原先設計的備援性。 |
鏡像媒體集中的媒體家族
指定於 BACKUP 陳述式之 TO 子句中的每個備份裝置都會對應到媒體家族。例如,如果 TO 子句列出三個裝置,BACKUP 就會將資料寫入這三個媒體家族中。在鏡像媒體集中,每個鏡像都必須包含每個媒體家族的副本。這就是為什麼每個鏡像必須具有相同的裝置數目。
當各個鏡像分別列出多個裝置時,裝置順序會決定要將哪個媒體家族寫入特定裝置。例如,在各份裝置清單中,第二個裝置都會對應到第二個媒體家族。對於上面範例中的裝置,下面資料表會說明這些裝置和媒體家族間的對應關係。
鏡像 | 媒體家族 1 | 媒體家族 2 | 媒體家族 3 |
---|---|---|---|
0 |
|
|
|
1 |
|
|
|
媒體家族必須永遠備份到特定鏡像中的相同裝置。因此,您每次使用現有媒體集時,都必須依照在建立該媒體集時所指定的相同順序來列出裝置。
如需鏡像媒體集的詳細資訊,請參閱<使用鏡像備份媒體集>。如需更多有關媒體集和媒體家族的一般資訊,請參閱<媒體集、媒體家族與備份組>。
權限
BACKUP DATABASE 和 BACKUP LOG 權限預設會授與系統管理員 (sysadmin) 固定伺服器角色以及 db_owner 和 db_backupoperator 固定資料庫角色的成員。
另外,使用者還可以指定媒體集及 (或) 備份組的密碼。當在媒體集上定義密碼時,使用者也必須提供媒體密碼,才能執行這些作業。同樣地,除非在還原命令中指定了正確的媒體密碼和備份組密碼,否則,無法還原。
在 BACKUP 陳述式中,定義備份組和媒體集的密碼是選用功能。這個密碼所提供的保護很弱。它的目的是避免授權或為授權的使用者使用 SQL Server 2005 工具進行不正確的還原。它無法預防使用其他方式或以取代密碼的方式來讀取備份資料。而且,密碼不能防止以 FORMAT 選項覆寫媒體。建議您使用增強式密碼。如需有關增強式密碼的詳細資訊,請參閱<增強式密碼>。
因此,雖然使用密碼可以協助您防止他人利用 SQL Server 工具,在未獲授權的情況下存取媒體內容,但密碼並無法保護內容,使它們免於被損毀。密碼無法充分防止他人在未獲授權的情況下存取媒體內容,因為備份組中的資料並沒有加密,理論上,使用者可以專為了檢查這些資料而撰寫程式來檢查它。在安全性非常重要的情況下,請務必防止未獲授權的個人實際存取媒體。
針對未用相關密碼建立的物件來指定密碼,是一項錯誤。
BACKUP 會利用 PASSWORD 選項所提供的備份組密碼來建立備份組。另外,BACKUP 通常會在寫入媒體之前,先驗證 MEDIAPASSWORD 選項所提供的媒體密碼。只有在將媒體格式化,因而會覆寫媒體標頭之時,BACKUP 才不會驗證媒體密碼。如果 BACKUP 寫入媒體標頭,BACKUP 會將媒體集密碼指派成 MEDIAPASSWORD 選項所指定的值。
如需有關密碼如何影響 SKIP、NOSKIP、INIT 和 NOINIT 等選項的資訊,請參閱本主題後面的<備註>一節。
備份裝置實體檔案的擁有權和權限問題,有可能干擾備份作業。SQL Server 必須能夠讀取和寫入裝置;執行 SQL Server 服務的帳戶必須有寫入權限。不過,在系統資料表中加入裝置項目的 sp_addumpdevice,並不會檢查檔案存取權限。當您試圖備份或還原時,在存取實體資源之前,不一定會出現備份裝置實體檔案的這些問題。
範例
附註: |
---|
顯示的 AdventureWorks 資料庫用來提供說明。AdventureWorks 是 SQL Server 2005 的其中一個範例資料庫。Adventure Works Cycles 是虛構的製造公司,用於示範資料庫概念與案例。 如需有關這個資料庫的詳細資訊,請參閱<範例和範例資料庫>。 |
此章節包含下列範例:
- A. 備份完整資料庫
- B. 備份資料庫和記錄
- C. 建立次要檔案群組的完整檔案備份
- D. 建立次要檔案群組的差異檔案備份
- E. 建立和備份至單一家族的鏡像媒體集中
- F. 建立和備份至多重家族的鏡像媒體集中
- G. 備份至現有的鏡像媒體集中
附註: |
---|
備份的如何主題包含了其他的範例。如需詳細資訊,請參閱<備份和還原的如何主題 (Transact-SQL)>。 |
A. 備份完整資料庫
下列範例會將 AdventureWorks
資料庫備份到磁碟檔案。
BACKUP DATABASE AdventureWorks
TO DISK = 'Z:\SQLServerBackups\AdvWorksData.bak'
WITH FORMAT;
GO
B. 備份資料庫和記錄
下列範例會備份 AdventureWorks 範例資料庫,依預設採用簡單復原模式。為了支援記錄備份,AdventureWorks 資料庫會修改成使用完整復原模式。
接下來,範例會使用 sp_addumpdevice 建立邏輯備份裝置來備份資料 (AdvWorksData
),以及建立另一個邏輯備份裝置來備份記錄 (AdvWorksLog
)。
這個範例接著會建立 AdvWorksData
的完整資料庫備份,並且在更新活動一段時間之後,將記錄備份到 AdvWorksLog
。
-- To permit log backups, before the full database backup, modify the database
-- to use the full recovery model.
USE master;
GO
ALTER DATABASE AdventureWorks
SET RECOVERY FULL;
GO
-- Create AdvWorksData and AdvWorksLog logical backup devices.
USE master
GO
EXEC sp_addumpdevice 'disk', 'AdvWorksData',
'Z:\SQLServerBackups\AdvWorksData.bak';
GO
EXEC sp_addumpdevice 'disk', 'AdvWorksLog',
'Z:\SQLServerBackups\AdvWorksLog.bak';
GO
-- Back up the full AdventureWorks database.
BACKUP DATABASE AdventureWorks TO AdvWorksData;
GO
-- Back up the AdventureWorks log.
BACKUP LOG AdventureWorks
TO AdvWorksLog;
GO
附註: |
---|
如果是實際執行的資料庫,請定期備份記錄。記錄的備份頻率必須足以保護資料不會遺失。 |
C. 建立次要檔案群組的完整檔案備份
下列範例會為兩個次要檔案群組中的每個檔案建立完整檔案備份。
--Back up the files in SalesGroup1:
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'Z:\SQLServerBackups\SalesFiles.bck'
GO
D. 建立次要檔案群組的差異檔案備份
下列範例會為兩個次要檔案群組中的每個檔案建立差異檔案備份。
--Back up the files in SalesGroup1:
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'Z:\SQLServerBackups\SalesFiles.bck'
WITH
DIFFERENTIAL
GO
E. 建立和備份至單一家族的鏡像媒體集中
下列範例會建立一個鏡像媒體集,其中包含單一媒體家族和四個鏡像,且會將 AdventureWorks
資料庫備份至其中。
BACKUP DATABASE AdventureWorks
TO TAPE = '\\.\tape0'
MIRROR TO TAPE = '\\.\tape1'
MIRROR TO TAPE = '\\.\tape2'
MIRROR TO TAPE = '\\.\tape3'
WITH
FORMAT,
MEDIANAME = 'AdventureWorksSet0'
F. 建立和備份至多重家族的鏡像媒體集中
下列範例會建立一個鏡像媒體集,其中的每個鏡像都由兩個媒體家族組成。之後,這個範例會將 AdventureWorks
資料庫備份在這兩個鏡像中。
BACKUP DATABASE AdventureWorks
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1'
MIRROR TO TAPE = '\\.\tape2', TAPE = '\\.\tape3'
WITH
FORMAT,
MEDIANAME = 'AdventureWorksSet1'
G. 備份至現有的鏡像媒體集中
下列範例會將備份組附加至先前範例所建立的媒體集中。
BACKUP LOG AdventureWorks
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1'
MIRROR TO TAPE = '\\.\tape2', TAPE = '\\.\tape3'
WITH
NOINIT,
MEDIANAME = 'AdventureWorksSet1'
附註: |
---|
NOINIT 是預設值,這裡顯示它是為了更加清楚。 |
[精選範例]
請參閱
參考
ALTER DATABASE (Transact-SQL)
DBCC SQLPERF (Transact-SQL)
RESTORE (Transact-SQL)
RESTORE FILELISTONLY (Transact-SQL)
RESTORE HEADERONLY (Transact-SQL)
RESTORE LABELONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)
sp_addumpdevice (Transact-SQL)
sp_configure (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_helpfilegroup (Transact-SQL)
其他資源
建立 SQL Server 資料庫的完整和差異備份
在 SQL Server 中使用備份媒體
媒體集、媒體家族與備份組
使用交易記錄備份
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 7 月 17 日 |
|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|