本主題介紹 SQL Server 備份和還原的基本備份媒體術語,適用於不熟悉 SQL Server 的讀者。 本主題描述 SQL Server 用於備份媒體的格式、備份媒體與備份裝置之間的對應、備份媒體上的備份組織,以及媒體集和媒體家族的數個考慮。 本主題也會描述第一次使用備份媒體之前初始化或格式化備份媒體的步驟,或將舊的媒體集取代為新的媒體集、如何覆寫媒體集中的舊備份集,以及如何將新的備份集附加至媒體集。
備註
如需 SQL Server 備份至 Azure Blob 記憶體服務的詳細資訊,請參閱 使用 Azure Blob 記憶體服務進行 SQL Server 備份和還原。
詞彙和定義
媒體集 是一個有序的集合,包含備份媒體、磁帶或磁碟檔案,其中一個或多個備份作業使用已定義類型及數量的備份裝置進行寫入。
在單一非鏡像裝置或媒體集中的一組鏡像裝置上建立的媒體家族備份
備份集 成功備份作業新增至媒體集的備份內容。
媒體集、媒體系列和備份集的概觀
一套或多個備份媒體上的備份組合成一個單一的媒體集合。
媒體集是備份媒體、磁帶或磁碟檔案或 Azure Blob 的已排序集合,其中一或多個備份作業已使用固定類型和數目的備份裝置所寫入。 某個媒體集會使用磁帶機、磁碟驅動器或 Azure Blob,但不會同時使用兩種或以上的組合。 例如,與媒體集相關聯的備份裝置可能是三個磁帶機,名為 \\.\TAPE0、 \\.\TAPE1和 \\.\TAPE2。 該媒體集只包含磁帶,從至少三個磁帶開始(每個磁碟驅動器一個)。 建立媒體集時會建立備份裝置的類型和數目,而且無法變更它們。 不過,如有必要,在備份和還原作業之間,指定的裝置可以取代為相同類型的裝置。
在備份作業期間,會藉由格式化備份媒體,在備份媒體上建立媒體集。 如需詳細資訊,請參閱本主題稍後的建立新媒體集。 格式化之後,每個檔案或磁帶都包含媒體集的媒體標頭,並準備好接收備份內容。 備妥標頭之後,備份作業會繼續將指定數據備份至針對作業指定之所有備份裝置上的備份媒體。
備註
媒體集可以備份成鏡像,以防止媒體卷(磁帶或磁碟檔案)損壞。 如需詳細資訊,請參閱鏡像備份媒體集 (SQL Server)。
SQL Server 2008 或更新版本可以讀取壓縮備份。 如需詳細資訊,請參閱<備份壓縮 (SQL Server)>。
媒體家庭
在單一非鏡像裝置或媒體集中的一組鏡像裝置上建立的備份,構成一個媒體家族。 媒體集所使用的備份裝置數目會決定媒體集中的媒體系列數目。 例如,如果媒體集使用兩個非鏡像備份裝置,媒體集就會包含兩個媒體系列。
備註
在鏡像媒體集中,每個媒體系列都會鏡像。 例如,如果使用六個備份裝置來格式化媒體集,其中使用兩個鏡像,則有三個媒體系列,每一個都包含兩個對等的備份數據複本。 如需鏡像媒體集的詳細資訊,請參閱 鏡像備份媒體集 (SQL Server) 。
媒體系列中的每個磁帶或磁碟都會指派 媒體序號。 磁碟的媒體序號一律為 1。 在磁帶媒體系列中,初始磁帶的序號為 1、第二個磁帶的序號為 2,依此類推。 如需詳細資訊,請參閱 使用媒體集和系列。
媒體標頭
備份媒體(磁碟檔或磁帶)的每個磁碟區都包含第一個使用磁帶(或磁碟)備份作業時所建立的媒體標頭。 該標頭會保持不變,直到媒體重新格式化為止。
媒體標頭包含識別媒體(磁碟檔案或磁帶)及其所在媒體系列內所需的所有資訊。 此資訊包括:
媒體的名稱。
媒體名稱是選擇性的,但建議您一致使用可清楚識別媒體的媒體名稱。 媒體名稱是由格式化媒體的人員所指派。
媒體集的唯一標識碼。
媒體集中的媒體家族數目。
包含此媒體之媒體家族的序號。
媒體家族的唯一識別碼。
媒體家族中這個媒體的序號。 對於磁碟檔案,此值一律為 1。
媒體描述是否包含 MTF 媒體標籤或其他媒體描述。
備註
用於備份或還原作業的所有媒體都會使用標準備份格式,而 SQL Server 會保留由其他應用程式所寫入的任何 MTF 媒體標籤,但不會自行寫入 MTF 媒體標籤。
Microsoft磁帶格式媒體標籤或媒體描述(自由格式文字)。
寫入標籤的備份軟體名稱。
格式化媒體之軟體廠商的唯一廠商標識碼。
標籤被寫上的日期和時間。
集合中的鏡像數目(1-4):1 表示未分清的裝置。
SQL Server 2014 可以處理由舊版 SQL Server 格式化的媒體。
備份集
成功的備份作業會將單一 備份集 新增至媒體集。 備份集的描述是根據它所屬的媒體集來進行。 如果備份媒體只包含一個媒體系列,該系列會包含整個備份集。 如果備份媒體是由多個媒體系列所組成,備份集就會分散到其中。 在每個媒體上,備份集都包含描述備份集的標頭。
下列範例顯示一個 Transact-SQL 語句,此語句會使用三個磁帶機做為備份裝置,為 AdventureWorks2012 資料庫建立名為 MyAdvWorks_MediaSet_1 的媒體集:
BACKUP DATABASE AdventureWorks2012
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH
FORMAT,
MEDIANAME = 'MyAdvWorks_MediaSet_1'
如果成功,此備份作業會產生新的媒體集,其中包含新的媒體標頭,而一個備份集會分散到三個磁帶。 下圖說明這些結果:
一般而言,建立媒體集之後,後續的備份作業會一個接一個地將備份集附加至媒體集。 不論涉及媒體或備份裝置的數目為何,備份集所使用的所有媒體都會組成媒體集。 備份集會依其在媒體集中的位置循序編號,讓您指定要還原的備份集。
媒體集的每個備份作業都必須寫入相同的備份裝置數目和類型。 使用多個裝置,如同第一個備份集一樣,每個後續備份集的內容都會分散在所有裝置上的備份媒體之間。 若要繼續上述範例,第二個備份作業 (差異備份) 會將資訊附加至相同的媒體集:
BACKUP DATABASE AdventureWorks2012
TO TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH
NOINIT,
MEDIANAME = 'AdventureWorksMediaSet1',
DIFFERENTIAL
備註
NOINIT 選項是預設值,但為了清楚起見,會包含此選項。
如果第二個備份作業成功,它會將第二個備份集寫入媒體集,併發佈下列備份內容:
當您還原備份時,您可以使用 FILE 選項來指定要使用的備份。 下列範例顯示還原 AdventureWorks2012 資料庫的完整資料庫備份時,使用 FILE =backup_set_file_number 子句,並在相同的媒體集上還原差異資料庫備份。 媒體集使用三個備份磁帶,其位於磁帶機 \\.\tape0、 tape1和 tape2上。
RESTORE DATABASE AdventureWorks2012 FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH
MEDIANAME = 'AdventureWorksMediaSet1',
FILE=1,
NORECOVERY;
RESTORE DATABASE AdventureWorks2012 FROM TAPE = '\\.\tape0', TAPE = '\\.\tape1', TAPE = '\\.\tape2'
WITH
MEDIANAME = 'AdventureWorksMediaSet1',
FILE=2,
RECOVERY;
GO
如需瞭解有關儲存媒體集、媒體家族及備份集資訊之歷史記錄資料表,請參閱備份歷程記錄和標頭資訊 (SQL Server)。
媒體集中的備份媒體數目取決於數個因素:
備份裝置數目
備份裝置的類型
備份集數目
使用媒體集和群組
本節討論使用媒體集和媒體系列時的幾個考量。
建立新的媒體集
若要建立新的媒體集,您必須格式化備份媒體(一或多個磁帶或磁碟檔案)。 格式設定程式會變更備份媒體,如下所示:
刪除舊標頭(如果有的話),有效地刪除備份媒體先前的內容。
格式化磁帶裝置會刪除目前掛接磁帶的所有先前內容。 格式化磁碟只會影響您為備份作業指定的檔案
在每個備份裝置上,於備份媒體(磁帶或磁碟檔案)寫入新的媒體標頭。
備份至現有的媒體集
當您備份到現有的媒體集時,您有下列兩個選項:
附加至現有的備份集。
為了充分利用可用空間,新的備份集通常會附加至現有的媒體集。 追加至備份會保留所有先前的備份。 如需詳細資訊,請參閱本節稍後的 附加至現有的備份集。
備註
附加,這是BACKUP的預設行為,可以使用NOINIT選項明確指定。
以目前的備份覆寫所有現有的備份集,讓目前的媒體標頭保持原位。
SQL Server 備份具有保護措施,可防止您不小心覆寫媒體。 不過,備份可以自動覆寫已達到預先定義到期日的備份集。
對於磁帶標頭,將標頭保留到位可能很合理。 如需詳細資訊,請參閱本節稍後的覆寫備份集。
備註
使用 BACKUP 語句的 INIT 選項來指定覆寫現有的備份集。
附加至現有的備份集
從相同或不同的資料庫在不同時間執行的備份可以儲存在相同的媒體上。 藉由將另一個備份集附加至現有的媒體,媒體先前的內容會保持不變,而新的備份會在媒體上最後一次備份結束時寫入。
根據預設,SQL Server 一律會將新的備份附加至媒體。 附加只能在媒體結尾發生。 例如,如果媒體磁碟區包含五個備份集,就無法略過前三個備份集,以使用新的備份集覆寫第四個備份集。
如果您使用BACKUP WITH NOREWIND進行磁帶備份,磁帶將會在作業結束時保持開啟。 這可讓您將進一步備份附加至磁帶,而不需要倒轉磁帶,然後再向前掃描以尋找最後一個備份集。 您可以在 sys.dm_io_backup_tapes 動態管理檢視中找到開啟的磁帶機清單;如需詳細資訊,請參閱 sys.dm_io_backup_tapes (Transact-SQL) 。
Microsoft Windows 備份和 SQL Server 備份可以共用相同的媒體,但無法互通。 SQL Server 備份無法備份 Windows 數據。
這很重要
SQL Server 2008 或更新版本可以讀取壓縮備份。 如需詳細資訊,請參閱<備份壓縮 (SQL Server)>。
覆寫備份集
使用 BACKUP 語句的 INIT 選項來指定覆寫現有的備份集。 如果有任何的話,此選項會覆寫媒體上的所有備份集,並保留媒體標頭。 如果沒有媒體標頭存在,則會建立一個。
對於磁帶標頭,將標頭保留到位可能很合理。 針對磁碟備份媒體,只會覆寫備份作業中指定的備份裝置所使用的檔案;磁碟上的其他檔案不會受到影響。 覆寫備份時,會保留任何現有的媒體標頭,並將新的備份建立為備份裝置上的第一個備份。 如果沒有現有的媒體標頭,則會自動撰寫具有相關聯媒體名稱和媒體描述的有效媒體標頭。 如果現有的媒體標頭無效,備份作業就會終止。 如果媒體是空的,則會使用指定的 MEDIANAME、MEDIAPASSWORD 和 MEDIADESCRIPTION 產生新的媒體標頭,如果有的話。
這很重要
從 SQL Server 2012 開始,MEDIAPASSWORD 選項會停止建立備份。 不過,您仍然可以還原使用密碼建立的備份。
如果下列任一條件存在,則不會覆寫備份媒體:
媒體上現有的備份尚未過期。 (如果指定 SKIP,則不會檢查到期日。)
到期日會指定備份到期的日期,而且可由另一個備份覆寫。 您可以在建立備份時指定到期日。 根據預設,到期日是由使用 sp_configure 設定的媒體保留選項所決定。 如需詳細資訊,請參閱 sp_configure (Transact-SQL) 。
如果提供媒體名稱,則不符合備份媒體上的名稱。
媒體名稱是描述性名稱,用於輕鬆識別媒體。
如果您確定要覆寫現有的媒體(例如,如果您知道不再需要磁帶上的備份),您可以明確地略過這些檢查。
如果備份媒體受到Microsoft Windows 保護,Microsoft SQL Server 不會寫入媒體。 若要覆寫受密碼保護的媒體,您必須重新初始化媒體。
順序號
正確順序對於媒體集內的多個媒體家族或媒體系列內的多個備份媒體而言很重要。 因此,備份會以下列方式指派序號:
媒體組中的循序媒體群組
在媒體集中,媒體系列會根據其在媒體集中的位置依序編號。 媒體系列號碼會記錄在family_sequence_number資料行的backupmediafamily數據表中。
媒體家族中的實體媒體
媒體序號表示媒體家族內實體媒體的順序。 初始備份媒體的序號為1。 這會標記為 1;第二個(第一個接續磁帶)則標記為 2;依此類推。 還原備份集時,媒體序號可確保還原備份的作員會依正確的順序掛接正確的媒體。
多個裝置
當您使用多個磁帶機或磁碟檔時,適用下列考慮:
備份用:
備份作業所建立的完整媒體集,必須由所有後續的備份作業使用。 例如,如果使用兩個磁帶備份裝置建立媒體集,則涉及相同媒體集的所有後續備份作業都必須使用兩個備份裝置。
還原相關操作:
對於磁碟備份還原和在線還原,所有媒體集都必須同時載入。 若要從磁帶備份離線還原,您可以從較少的備份裝置處理媒體系列。 必須先完全處理每個媒體系列,才能開始處理其他媒體系列。 除非使用單一裝置還原媒體系列,否則媒體系列一律會以平行方式處理。
相關工作
建立新的媒體集
建立完整資料庫備份 (SQL Server) (備份至新的媒體集,並清除所有現有的備份集 選項)
BACKUP (Transact-SQL) (FORMAT 選項)
將新的備份附加至現有的媒體
建立完整資料庫備份 (SQL Server) (附加至現有的備份集 選項)
BACKUP(Transact-SQL)(NOINIT 選項)
覆寫現有的備份集
建立完整資料庫備份 (SQL Server) (覆寫所有現有的備份集選項)
BACKUP (Transact-SQL) (INIT 選項)
設定到期日
檢視媒體序列和系列序號
backupmediafamily (Transact-SQL) (family_sequence_number 欄)
檢視特定備份裝置上的備份集
讀取備份裝置上媒體的媒體標頭
另請參閱
備份和還原 SQL Server 資料庫在備份和還原期間可能發生的媒體錯誤(SQL Server)備份記錄和標頭資訊(SQL Server)鏡像備份媒體集(SQL Server)BACKUP(Transact-SQL)RESTORE(Transact-SQL)RESTORE REWINDONLY(Transact-SQL)sp_configure(Transact-SQL)