RESTORE 陳述式 - 引數 (Transact-SQL)

適用於:SQL Server

本文章列出 RESTORE {DATABASE|LOG} 陳述式<語法>章節中所描述的引數,以及一組相關的輔助陳述式:RESTORE FILELISTONLY、RESTORE HEADERONLY、RESTORE LABELONLY、RESTORE REWINDONLY 和 RESTORE VERIFYONLY。 大部份引數都只得到這六個引數其中一部份的支援。 在每個引數的描述中,都會指出引數所得到的支援。

Transact-SQL 語法慣例

Syntax

如需語法的詳細資訊,請參閱下列文章:

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

DATABASE

支援者:RESTORE

指定目標資料庫。 如果指定了檔案和檔案群組清單,就只會還原這些檔案和檔案群組。

如果是使用完整或大量記錄復原模式的資料庫,在大部分情況下,SQL Server 都會要求您先備份記錄結尾,然後再還原資料庫。 除非 RESTORE DATABASE 陳述式包含 WITH REPLACE 或 WITH STOPAT 子句 (必須指定在資料備份結束之後發生的時間或交易),否則如果沒有先備份記錄結尾便還原資料庫,就會產生錯誤。 如需結尾記錄備份的詳細資訊,請參閱結尾記錄備份 (SQL Server)

記錄

支援者:RESTORE

指定要將交易記錄備份套用在這個資料庫上。 您必須依照順序來套用交易記錄。 SQL Server 會檢查備份的交易記錄,以確保交易會依正確順序載入到正確的資料庫。 若要套用多個交易記錄,請在所有還原作業上使用 NORECOVERY 選項,但最後一項還原作業除外。

注意

最後還原的記錄通常是結尾記錄備份。 「結尾記錄備份」是在剛要還原資料庫之前 (通常是在資料庫作業失敗之後) 所建立的記錄備份。 從可能已損毀的資料庫中取得結尾記錄備份,可以擷取尚未備份的記錄 (記錄結尾) 來防止遺失工作。 如需詳細資訊,請參閱 結尾記錄備份 (SQL Server)

如需詳細資訊,請參閱套用交易記錄備份 (SQL Server)

{ database_name | @database_name_var}

支援者:RESTORE

這是記錄或完整資料庫要還原到其中的資料庫。 如果這個名稱以變數 (@database_name_var) 的形式提供,您還可以將這個名稱指定為字串常數 (@database_name_var = database_name) 或指定為字元字串資料類型的變數,但 ntexttext 資料類型除外。

<file_or_filegroup_or_page> [ ,...n ]

支援者:RESTORE

指定要包括在 RESTORE DATABASE 或 RESTORE LOG 陳述式中的邏輯檔案或檔案群組或頁面的名稱。 您可以指定一份檔案或檔案群組的清單。

針對使用簡單復原模式的資料庫,只有當目標檔案或檔案群組是唯讀,或者這是 PARTIAL 還原 (會導致無用的檔案群組) 時,才能指定 FILE 和 FILEGROUP 選項。

如果是使用完整或大量記錄復原模式的資料庫,在利用 RESTORE DATABASE 來還原一或多個檔案、檔案群組及 (或) 頁面之後,您必須將交易記錄套用在還原的資料所在的檔案上;套用記錄會使這些檔案與資料庫的其餘部分一致。 例外狀況如下:

  • 如果要還原的檔案在上次備份之前是唯讀的,便不需要套用交易記錄,RESTORE 陳述式會通知您這個情況。

  • 備份包含主要檔案群組,且正在執行部分還原。 在這個情況下,不需要還原記錄,因為此時會從備份組中自動還原記錄。

FILE = { logical_file_name_in_backup| @logical_file_name_in_backup_var}

命名要包括在資料庫還原中的檔案。

FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }

命名要包括在資料庫還原中的檔案群組。

只有在指定的檔案群組是唯讀,而且這是部分還原 (也就是使用 WITH PARTIAL) 時,才能在簡單復原模式中使用 FILEGROUP。 任何未還原的讀寫檔案群組都會標示為已解除功能,且以後無法還原到結果資料庫中。

READ_WRITE_FILEGROUPS

選取所有讀寫檔案群組。 如果您有唯讀檔案群組要在讀寫檔案群組之後,在唯讀檔案群組之前還原,這個選項特別有用。

PAGE = 'file: _page* [ , ...n ] '

指定要進行分頁還原 (只有使用完整或大量記錄復原模式的資料庫,才能支援分頁還原) 的一或多個頁面清單。 其值如下:

PAGE
指出一或多個檔案和頁面的清單。

file
這是包含所要還原特定頁面之檔案的檔案識別碼。

page
這是要在檔案中還原之頁面的頁面識別碼。

n
這是一個預留位置,表示可以指定多個頁面。

在還原序列中,能夠還原到任何單一檔案的最大頁面數目是 1000。 不過,如果檔案中有不少損毀的頁面,請考慮還原整個檔案,而不是還原頁面。

注意

分頁還原絕對不會復原。

如需分頁還原的詳細資訊,請參閱還原分頁 SQL Server

[ , ...n ]
這是一個預留位置,表示可以在逗號分隔清單中指定多個檔案、檔案群組和頁面。 數目沒有限制。

FROM { <backup_device> [ ,...n ]| <database_snapshot> }

通常用來指定還原備份的來源備份裝置。 另外,您也可以在 RESTORE DATABASE 陳述式中,利用 FROM 子句來指定資料庫所要還原的資料庫快照集名稱,此時不能使用 WITH 子句。

如果省略 FROM 子句,就不會還原備份。 相反地,此時會復原資料庫。 這可讓您復原已利用 NORECOVERY 選項來還原的資料庫,或切換到待命伺服器。 如果省略 FROM 子句,就必須在 WITH 子句中指定 NORECOVERY、RECOVERY 或 STANDBY。

<backup_device> [ ,...n ]

指定還原作業要用的邏輯或實體備份裝置。

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE REWINDONLY 以及 RESTORE VERIFYONLY

<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),或指定為字元字串資料類型的變數,但 ntexttext 資料類型除外。

{DISK | TAPE } = { 'physical_backup_device_name' | @physical_backup_device_name_var }
可讓您從指定的磁碟或磁帶裝置中還原備份。 您應該用裝置的實際名稱 (例如,完整路徑和檔案名稱) 來指定磁碟和磁帶的裝置類型:DISK ='Z:\SQLServerBackups\AdventureWorks.bak'TAPE ='\\\\.\TAPE0'。 如果裝置名稱以變數 (@physical_backup_device_name_var) 的方式指定,您可以將這個名稱指定為字串常數 (@physical_backup_device_name_var = '實體備份裝置名稱'),或指定為字元字串資料類型的變數,但 ntexttext 資料類型除外。

如果所用的網路伺服器是用 UNC 名稱 (必須包含機器名稱),請指定磁碟裝置類型。 如需如何使用通用命名慣例 (UNC) 名稱的詳細資訊,請參閱備份裝置 (SQL Server)

您用來執行 SQL Server 的帳戶,必須要有遠端電腦或網路伺服器的 READ 存取權,才能執行 RESTORE 作業。

n
這是一個預留位置,表示可以在逗號分隔清單中指定最多達 64 個備份裝置。

還原序列所需要的備份裝置數目,是否與建立備份所屬的媒體集時所用的備份裝置數目相同,取決於還原作業是離線或在線上進行,如下所示:

  • 如果是離線還原,用來還原備份的裝置可以比建立備份時所用的裝置少。

  • 線上還原需要備份的所有備份裝置。 試圖用較少的裝置來還原會失敗。

例如,設想您已將資料庫備份在連接到伺服器的四部磁帶機中。 線上還原會要求您將四個磁碟機連線到伺服器;離線還原則可讓您在機器只有不到四個磁碟機時還原備份。

注意

當從鏡像媒體集中還原備份時,每個媒體家族只能指定單一鏡像。 不過,如果有其他鏡像,當出現錯誤時,解決部分還原問題的速度會比較快。 您可以利用另一個鏡像的對應磁碟區來替代損毀的媒體磁碟區。 請注意,如果是離線還原,您可以從比媒體家族少的裝置進行還原,但每個家族只會處理一次。

<database_snapshot>::=

支援者:RESTORE DATABASE

DATABASE_SNAPSHOT =database_snapshot_name
將資料庫還原到 database_snapshot_name 所指定的資料庫快照集。 DATABASE_SNAPSHOT 選項只適用於完整的資料庫還原。 在還原作業中,資料庫快照集會取代完整資料庫備份。

還原作業需要指定的資料庫快照集是資料庫中的唯一資料庫快照集。 在還原作業期間,資料庫快照集和目的地資料庫都會標示為 In restore。 如需詳細資訊,請參閱 RESTORE DATABASE 中的<備註>一節。

WITH 選項

指定還原作業要用的選項。 如需哪些陳述式使用各個選項的摘要,請參閱這個文章稍後的<WITH 選項的支援摘要>一節。

注意

這裡組織 WITH 選項的順序,與 RESTORE {DATABASE|LOG} 中<語法>一節的順序相同。

PARTIAL

支援者:RESTORE DATABASE

指定部分還原作業,以還原主要檔案群組和任何指定的次要檔案群組。 PARTIAL 選項已隱含地選取主要檔案群組;不需要指定 FILEGROUP = 'PRIMARY'。 若要還原次要檔案群組,您必須使用 FILE 選項或 FILEGROUP 選項明確指定檔案群組。

在 RESTORE LOG 陳述式中,不得使用 PARTIAL 選項。

PARTIAL 選項會啟動分次還原的初始階段,可讓您稍後再還原其餘的檔案群組。 如需詳細資訊,請參閱分次還原 (SQL Server)

[ RECOVERY | NORECOVERY | STANDBY ]

支援者:RESTORE

RECOVERY
指示還原作業回復任何未認可的交易。 在復原程序之後,資料庫便已備妥,可供使用。 如果 NORECOVERY、RECOVERY 和 STANDBY 三者都沒有指定,預設值就是 RECOVERY。

如果規劃了後續的 RESTORE 作業 (RESTORE LOG,或差異備份的 RESTORE DATABASE),就應該指定 NORECOVERY 或 STANDBY。

從舊版 SQL Server 還原備份組時,可能需要升級資料庫。 當指定 WITH RECOVERY 時,會自動執行這項升級。 如需詳細資訊,請參閱套用交易記錄備份 (SQL Server)

注意

如果省略 FROM 子句,就必須在 WITH 子句中指定 NORECOVERY、RECOVERY 或 STANDBY。

NORECOVERY

指示還原作業不回復任何未認可的交易。 如果稍後必須套用另一個交易記錄,請指定 NORECOVERY 或 STANDBY 選項。 如果 NORECOVERY、RECOVERY 和 STANDBY 三者都沒有指定,預設值就是 RECOVERY。 在使用 NORECOVERY 選項的離線還原作業期間,無法使用資料庫。

若要還原資料庫備份和一或多個交易記錄,或每當需要多個 RESTORE 陳述式 (例如,還原完整資料庫備份,後面再接著差異資料庫備份) 時,除了最後一個 RESTORE 陳述式,RESTORE 需要所有 RESTORE 陳述式都使用 WITH NORECOVERY 選項。 最佳作法是在多步驟的還原序列中,在 ALL 陳述式上使用 WITH NORECOVERY,直到抵達所需要的復原點為止,之後,再使用專供復原的個別 RESTORE WITH RECOVERY 陳述式。

當搭配檔案或檔案群組還原作業來使用時,NORECOVERY 會強制資料庫在還原作業之後,維持還原狀態。 在下列情況下,這非常有用:

  • 正在執行還原指令碼,且始終在套用記錄。

  • 使用一系列檔案還原,且資料庫的用途並不是要能夠在兩項還原作業之間使用。

在某些情況下,RESTORE WITH NORECOVERY 會將向前復原集向前捲動到足以與資料庫一致。 在這種情況下,並不會進行回復,資料會依照這個選項的預期,維持離線狀態。 不過,資料庫引擎會發出參考用訊息,說明此時可以利用 RECOVERY 選項來復原向前復原集。

STANDBY =standby_file_name

指定可供恢復復原效果的待命資料庫檔案。 離線還原可以使用 STANDBY 選項 (包括部分還原)。 線上還原不允許使用這個選項。 試圖指定線上還原的 STANDBY 選項,會使還原作業失敗。 當資料庫需要升級時,不允許使用 STANDBY。

待命資料庫檔案是用來保存 RESTORE WITH STANDBY 的恢復階段期間,所修改之分頁的「寫入時複製」前置影像。 待命資料庫檔案可讓您在各次交易記錄還原作業之間,呼叫資料庫來進行唯讀存取,且可以搭配暖待命伺服器狀況或特殊復原狀況來使用,在這個狀況下,在各次記錄還原之間檢查資料庫會很有用。 在 RESTORE WITH STANDBY 作業之後,下一項 RESTORE 作業會自動刪除恢復檔案。 如果在下一項 RESTORE 作業之前,自動刪除這個待命資料庫檔案,就必須重新還原整個資料庫。 當資料庫在 STANDBY 狀態中,您應該如同任何其他資料庫檔案一樣,小心處理這個待命資料庫檔案。 這個檔案不像其他資料庫檔案,只有在還原作業為使用中的期間,資料庫引擎才會將這個檔案保持為開啟狀態。

standby_file_name 會指定一個待命資料庫檔案,這個檔案的位置儲存在資料庫記錄中。 如果現有的檔案使用指定的名稱,就會覆寫該檔案;否則,資料庫引擎會建立這個檔案。

給定待命資料庫檔案的大小需求,會隨著還原作業期間,未認可的交易所產生的恢復動作量而不同。

重要

如果指定的待命資料庫檔案名稱所在的磁碟機之可用磁碟空間已用完,還原作業就會停止。

如需 RECOVERY 和 NORECOVERY 的比較,請參閱 RESTORE 中的<備註>一節。

LOADHISTORY

支援者:RESTORE VERIFYONLY

指定還原作業將資訊載入 msdb 記錄資料表中。 LOADHISTORY 選項會針對所驗證的單一備份組,將媒體集上所儲存之 SQL Server 備份的相關資訊,載入 msdb 資料庫的備份和還原記錄資料表中。 如需記錄資料表的詳細資訊,請參閱系統資料表 (Transact-SQL)

請注意,針對 msdb 記錄資料表中已經存在的備份,使用 LOADHISTORY,將會使用新的backup_set_id 新增相同的資訊。 此外,如果使用 LOADHISTORY 在 msdb 中重新建立備份歷程記錄,則不論是在不同的伺服器上,或是從原始伺服器刪除備份之後,都建議您依備份所採用的順序,執行備份的還原命令。 如此可確保 LSN 鏈結可保持不變,且 SSMS 還原精靈可以正確地讀取備份歷程記錄,以產生正確的還原順序。 以 LOADHISTORY 重新建立的備份歷程記錄,若未依順序進行,則在嘗試還原時可能會導致錯誤 (「因為 LSN 鏈結中斷,而無法建立還原計劃。 (Microsoft.SqlServer.SmoExtended)」)。

<general_WITH_options> [ ,...n ]

RESTORE DATABASE 和 RESTORE LOG 陳述式支援下列常用的 WITH 選項。 一或多個輔助陳述式也支援其中某些選項,如下所示。

還原作業選項

這些選項會影響還原作業的行為。

MOVE '備份中的邏輯檔案名稱' TO '作業系統檔案名稱' [ ...n ]

支援者:RESTORERESTORE VERIFYONLY

指定由 logical_file_name_in_backup 指定其邏輯名稱的資料或記錄檔,應該透過還原到 operating_system_file_name 所指定的位置來移動。 備份組中資料或記錄檔的邏輯檔案名稱,會與當初建立備份組時資料庫中的邏輯名稱相符。

n 是預留位置,表示您可以指定其他 MOVE 陳述式。 針對您想要從備份組還原到新位置的每一個邏輯檔案指定 MOVE 陳述式。 根據預設,logical_file_name_in_backup 檔案會還原到它的原始位置。

注意

若要取得備份組中的邏輯檔清單,請使用 RESTORE FILELISTONLY。

如果利用 RESTORE 陳述式,將資料庫重新放置在相同的伺服器中,或將它複製到不同的伺服器中,您可能需要 MOVE 選項,才能重新放置資料庫檔案,以及避免與現有檔案發生衝突。

當搭配 RESTORE LOG 來使用時,您只能利用 MOVE 選項來重新放置在還原的記錄所涵蓋的間隔期間加入的檔案。 例如,如果記錄備份包含 file23 檔的新增檔案作業,您可以在 RESTORE LOG 上,利用 MOVE 選項來重新放置這個檔案。

與 SQL Server 快照集備份一起使用時,MOVE 選項只可用於在和原始 Blob 相同的儲存體帳戶內,將檔案重新配置到 Azure Blob。 MOVE 選項無法用來將快照集備份還原至本機檔案或不同的儲存體帳戶。

如果您計畫將資料庫重新放置在相同的伺服器中,或將它複製到不同的伺服器時,使用 RESTORE VERIFYONLY 陳述式,您可能需要 MOVE 選項,才能確認目標有足夠的空間,以及識別與現有檔案可能發生的衝突。

如需詳細資訊,請參閱 使用備份與還原複製資料庫

CREDENTIAL

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

適用於::SQL Server 2012 (11.x) SP1 CU2 和更新版本

只可用於從 Microsoft Azure Blob 儲存體還原備份時。

注意

若為 SQL Server 2012 (11.x) SP1 CU2 到 SQL Server 2016 (13.x),則在從 URL 還原時,只能從單一裝置進行還原。 若要能在從 URL 還原時,可從多部裝置進行還原,必須使用 SQL Server 2016 (13.x) 或更新版本,且必須使用共用存取簽章 (SAS) 權杖。 如需詳細資訊,請參閱啟用 SQL Server Managed Backup to Microsoft Azure在 Azure 儲存體上使用 Powershell 搭配共用存取簽章 (SAS) 權杖來簡化 SQL 認證的建立 \(英文\)。

REPLACE

支援者:RESTORE

指定即使已有另一個同名資料庫存在,SQL Server 仍應建立指定的資料庫及其相關檔案。 在這種情況下,會刪除現有的資料庫。 如果沒有指定 REPLACE 選項,就會進行安全檢查。 這樣可避免意外覆寫不同的資料庫。 這項安全檢查可確保在同時發生下列兩種狀況時,RESTORE DATABASE 陳述式不會將資料庫還原到目前的伺服器中:

  • RESTORE 陳述式所指定的資料庫已在目前的伺服器中,且

  • 資料庫名稱不是備份組所記錄的資料庫名稱。

另外,REPLACE 也可讓 RESTORE 覆寫無法確認為屬於還原中之資料庫的現有檔案。 RESTORE 通常會拒絕覆寫先前已存在的檔案。 您也可以依照 RESTORE LOG 選項的相同方式來使用 WITH REPLACE。

REPLACE 也覆寫了在還原資料庫之前,您必須先備份記錄結尾的需求。

如需使用 REPLACE 選項所造成影響的詳細資訊,請參閱 RESTORE Transact-SQL

RESTART

支援者:RESTORE

指定 SQL Server 應重新啟動已中斷的還原作業。 RESTART 會在中斷點上,重新啟動還原作業。

RESTRICTED_USER

支援者:RESTORE

限制 db_ownerdbcreatorsysadmin 等角色的成員才能存取新還原的資料庫。 RESTRICTED_USER 會取代 DBO_ONLY 選項。 SQL Server 2008 (10.0.x) 已停止支援 DBO_ONLY。

請搭配 RECOVERY 選項來使用這個項目。

備份組選項

這些選項會在包含要還原之備份的備份組上運作。

FILE ={ backup_set_file_number | @backup_set_file_number }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE VERIFYONLY

識別要還原的備份組。 例如, backup_set_file_number1 ,表示備份媒體的第一個備份組; backup_set_file_number2 ,表示第二個備份組。 您可以使用 RESTORE HEADERONLY 陳述式來取得備份組的 backup_set_file_number

當未指定時,預設值是 1,但 RESTORE HEADERONLY 除外,在此案例中會處理媒體集中的所有備份組。 如需詳細資訊,請參閱指定備份組

重要

這個 FILE 選項和用來指定資料庫檔案的 FILE 選項無關,FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }。

PASSWORD = { password | @password_variable }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE VERIFYONLY

提供備份組的密碼。 備份組密碼是一個字元字串。

注意

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

如果建立備份組時指定了密碼,您就必須提供密碼,才能從備份組中執行任何還原作業。 指定錯誤密碼,或備份組沒有密碼,卻指定了密碼,都是錯誤。

重要

這個密碼只為媒體集提供弱的保護。 如需詳細資訊,請參閱相關陳述式的<權限>一節。

[ METADATA_ONLY | SNAPSHOT ] [ DBNAME = { <資料庫名稱> | @database_name_variable } ]

於 SQL Server 2022 (16.x) 推出。

需要從快照集備份進行還原。 BACKUP SERVERBACKUP GROUP...。請參閱 建立 Transact-SQL 快照集備份

METADATA_ONLY 與 SNAPSHOT 同義。 虛擬裝置介面 (VDI) 使用 SNAPSHOT。 如需 VDI 的相關資訊,請參閱虛擬裝置介面 (VDI) 參考資料

媒體集選項

這些選項會處理整個媒體集。

MEDIANAME = { media_name | @media_name_variable}

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

指定媒體的名稱。 如果提供的話,媒體名稱必須符合備份磁碟區中的媒體名稱;否則,還原作業會終止。 如果 RESTORE 陳述式中沒有媒體名稱,就不會檢查備份磁碟區中的相符媒體名稱。

重要

在備份和還原作業中使用一致的媒體名稱,可以為還原作業所選的媒體提供額外的安全檢查。

MEDIAPASSWORD = { mediapassword | @mediapassword_variable }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

提供媒體集的密碼。 媒體集密碼是一個字元字串。

注意

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

如果在格式化媒體集時提供了密碼,就必須使用這個密碼,才能存取媒體集中的任何備份組。 指定錯誤密碼,或媒體集沒有密碼,卻指定了密碼,都是錯誤。

重要

這個密碼只為媒體集提供弱的保護。 如需詳細資訊,請參閱相關陳述式的<權限>一節。

BLOCKSIZE = { blocksize | @blocksize_variable }

支援者:RESTORE

指定實體區塊大小 (以位元組為單位)。 支援的大小為 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 位元組。 磁帶裝置的預設值為 65536,其他裝置則為 512。 一般而言這個選項是不必要的,因為 RESTORE 會自動選取裝置適用的區塊大小。 明確指出區塊大小會覆寫自動選取的區塊大小。

如果您要從 CD-ROM 還原備份,請指定 BLOCKSIZE=2048。

注意

一般而言,只有從磁帶裝置讀取時,這個選項才會對效能造成影響。

資料傳輸選項

這些選項可讓您從備份裝置最佳化資料傳送。

BUFFERCOUNT = { buffercount | @buffercount_variable }

支援者:RESTORE

指定要用於還原作業的 I/O 緩衝區總數。 您可以指定任何正整數,不過,緩衝區的數目很大時,可能會因為 Sqlservr.exe 處理序中的虛擬位址空間不足而造成「記憶體不足」錯誤。

緩衝區使用的總空間可由下列公式判斷:buffercount****maxtransfersize

MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }

支援者:RESTORE

指定備份媒體與 SQL Server 之間要使用的最大傳送單位 (以位元組為單位)。 可能的值是 65536 位元組 (64 KB) 的倍數,最大可達 4194304 位元組 (4 MB)。

注意

當資料庫已設定 FILESTREAM,或包括記憶體內 OLTP 檔案群組時,MAXTRANSFERSIZE 在還原時應該大於或等於備份建立時使用的大小。

錯誤管理選項

這些選項可讓您決定還原作業是否要啟用備份總和檢查碼,以及作業在發生錯誤時是否要停止。

{ CHECKSUM | NO_CHECKSUM }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

預設行為是,如果有總和檢查碼,便驗證總和檢查碼,如果沒有,就不檢查,繼續作業。

CHECKSUM
指定必須驗證備份總和檢查碼,如果備份沒有備份總和檢查碼,還原作業便會失敗,且會出現一則訊息,指出總和檢查碼不存在。

注意

只有在使用備份總和檢查碼時,頁面總和檢查碼才會與備份作業相關。

依預設,在發現無效的總和檢查碼時,RESTORE 會報告一則總和檢查碼錯誤,且會停止作業。 不過,如果您指定 CONTINUE_AFTER_ERROR,在損毀狀況可接受的情況下,RESTORE 會在傳回總和檢查碼錯誤和無效總和檢查碼所在頁碼之後,繼續作業。

如需使用備份總和檢查碼的詳細資訊,請參閱在備份和還原期間可能出現的媒體錯誤 (SQL Server)

NO_CHECKSUM
明確停用還原作業的總和檢查碼驗證。

{ STOP_ON_ERROR | CONTINUE_AFTER_ERROR }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

STOP_ON_ERROR
指定在發生第一個錯誤之後,便停止還原作業。 此為 RESTORE 的預設行為,但 VERIFYONLY 除外,其預設值是 CONTINUE_AFTER_ERROR。

CONTINUE_AFTER_ERROR
指定在發生錯誤之後,還原作業繼續運作。

如果備份包含損毀的分頁,您最好利用不含錯誤的替代備份 (像是在頁面損毀之前所取得的備份) 來重複還原作業。 不過,您也可以利用還原陳述式的 CONTINUE_AFTER_ERROR 選項來還原損毀的備份,嘗試搶救這些資料,做為最後的手段。

FILESTREAM 選項

FILESTREAM ( DIRECTORY_NAME =directory_name )

支援者:RESTORERESTORE VERIFYONLY

適用於:SQL Server 2012 (11.x) 和更新版本

Windows 相容的目錄名稱。 在 SQL Server 執行個體的所有資料庫層級 FILESTREAM 目錄名稱之間,此名稱不得重複。 不論 SQL Server 定序設定為何,唯一性比較都不會區分大小寫。

監視選項

這些選項可讓您從備份裝置監視資料傳送。

STATS [ =percentage ]

支援者:RESTORERESTORE VERIFYONLY

每次另一個百分比完成時,便顯示一則訊息,用來量測進度。 如果省略 percentage,則每完成約 10%,SQL Server 都會顯示一則訊息。

STATS 選項報告到達下一個間隔之報告臨界值的完成百分比。 這項作業大略是以指定的百分比來進行;例如,當 STATS=10 時,資料庫引擎會大約依照這個間隔來進行報告;例如,當實際的精確百分比為 40% 時,這個選項可能會顯示 43%。 對大型備份組而言,這不成問題,因為在已完成的 I/O 呼叫之間,百分比完成的移動非常緩慢。

磁帶選項

這些選項僅適用於「磁帶」裝置。 如果所使用的不是磁帶裝置,將忽略這些選項。

{ REWIND | NOREWIND }

這些選項僅適用於「磁帶」裝置。 如果所使用的不是磁帶裝置,將忽略這些選項。

REWIND
支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE VERIFYONLY

指定 SQL Server 倒帶並鬆脫磁帶。 REWIND 是預設值。

NOREWIND
支援者:RESTORERESTORE VERIFYONLY

在任何其他 RESTORE 陳述式中指定 NOREWIND,都會產生錯誤。

指定 SQL Server 將會在備份作業之後,讓磁帶維持在開啟狀態。 對磁帶執行多次備份作業時,可以使用這個選項來改進效能。

NOREWIND 隱含 NOUNLOAD,而這些選項無法相容於單一的 RESTORE 陳述式。

注意

如果您使用 NOREWIND,則 SQL Server 的執行個體會保有磁帶機的擁有權,直到在相同處理序中執行的 BACKUP 或 RESTORE 陳述式使用 REWIND 或 UNLOAD 選項,或是伺服器執行個體關閉為止。 保留磁帶的開啟狀態可以防止其他處理序存取這個磁帶。 如需如何顯示開啟的磁帶清單及關閉開啟的磁帶之詳細資訊,請參閱備份裝置 (SQL Server)

{ UNLOAD | NOUNLOAD }

支援者:RESTORERESTORE FILELISTONLYRESTORE HEADERONLYRESTORE LABELONLYRESTORE REWINDONLY 以及 RESTORE VERIFYONLY

這些選項僅適用於「磁帶」裝置。 如果所使用的不是磁帶裝置,將忽略這些選項。

注意

UNLOAD/NOUNLOAD 是工作階段設定,在工作階段的存留期間會一直保持不變,直到指定其他設定來進行重設為止。

UNLOAD
指定在備份完成之後,便自動倒轉和卸載磁帶。 UNLOAD 是在工作階段開始時的預設值。

NOUNLOAD
指定在 RESTORE 作業之後,磁帶仍會在磁帶機上保持載入。

<replication_WITH_option>

只有在建立備份時複寫了資料庫,這個選項才會相關。

KEEP_REPLICATION
支援者:RESTORE

當設定複寫來處理記錄傳送時,請使用 KEEP_REPLICATION。 它可防止在暖待命伺服器中還原資料庫備份或記錄備份時,或在復原資料庫時,移除複寫設定。 不允許使用 NORECOVERY 選項還原備份時,請指定這個選項。 若要確定在還原之後,複寫能夠正常運作,請執行下列動作:

  • 暖待命伺服器的 msdbmaster 資料庫必須與主要伺服器的 msdbmaster 資料庫同步。

  • 必須重新命名暖待命伺服器,使用與主要伺服器相同的名稱。

<change_data_capture_WITH_option>

只有在建立備份時,資料庫啟用了異動資料擷取,這個選項才會相關。

KEEP_CDC

支援者:RESTORE

KEEP_CDC 應該用來防止在另一部伺服器中還原資料庫備份或記錄備份時,或在復原資料庫時,移除異動資料擷取設定。 不允許使用 NORECOVERY 選項還原備份時,請指定這個選項。

使用 KEEP_CDC 來還原資料庫不會建立異動資料擷取作業。 若要在還原資料庫之後擷取記錄檔中的變更,請針對已還原的資料庫重新建立擷取程序作業和清除作業。 如需詳細資訊,請參閱 sys.sp_cdc_add_job (Transact-SQL)

如需如何搭配資料庫鏡像使用異動資料擷取的詳細資訊,請參閱異動資料擷取和其他 SQL Server 功能

<service_broker_WITH_options>

開啟或關閉 Service Broker 訊息傳遞,或設定新的 Service Broker 識別碼。 只有在建立備份時,資料庫啟用 (已啟動) 了 Service Broker,此選項才有意義。

{ ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER }

支援者:RESTORE DATABASE

ENABLE_BROKER
指定在還原結束時啟用 Service Broker 訊息傳遞,以便立即傳送訊息。 根據預設,Service Broker 訊息傳遞會在還原期間停用。 資料庫會保留現有的 Service Broker 識別碼。

ERROR_BROKER_CONVERSATIONS
結束所有交談,並顯示一則指出已附加或還原資料庫的錯誤。 這可讓您的應用程式執行現有交談作業的正規清除工作。 Service Broker 訊息傳遞將保持停用,直到這項作業完成之後才會啟用。 資料庫會保留現有的 Service Broker 識別碼。

NEW_BROKER
指定資料庫應該被指派新的 Service Broker 識別碼。 由於資料庫會被視為新的 Service Broker,因此系統會立即移除資料庫中所有現有的交談,而不會產生結束對話訊息。 您必須使用新的識別碼來重新建立參考舊 Service Broker 識別碼的任何路由。

<point_in_time_WITH_options>

支援者:RESTORE {DATABASE|LOG} 且只適用於完整或大量記錄復原模式。

您可以在 STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句中指定目標復原點,藉以將資料庫還原至特定時間點或交易。 指定的時間或交易一律是從記錄備份中還原。 在還原順序的每個 RESTORE LOG 陳述式中,您必須在相同的 STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句中指定目標時間或交易。

您必須先還原其端點早於目標復原點的完整資料庫備份,當做時間點還原的必要條件。 若要協助您識別要還原哪個資料庫備份,可以選擇性地在 RESTORE DATABASE 陳述式中指定 WITH STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句,以便在資料庫備份太接近指定的目標時間時引發錯誤。 不過,系統一定會還原完整的資料備份,即使它包含目標時間也一樣。

注意

RESTORE_DATABASE 與 RESTORE_LOG 時間點 WITH 選項類似,但是只有 RESTORE LOG 可支援 mark_name 引數。

{ STOPAT | STOPATMARK | STOPBEFOREMARK }

STOPAT = { 'datetime' | @_datetime_var* }
指定要將資料庫還原到 datetime@datetime_var 參數所指定的日期和時間當時,所處的狀態。 如需指定日期和時間的詳細資訊,請參閱日期和時間資料類型與函數 (Transact-SQL)

如果變數用於 STOPAT,這個變數必須是 varcharcharsmalldatetimedatetime 資料類型。 只有在指定日期和時間之前寫入的交易記錄會套用至資料庫上。

注意

如果指定的 STOPAT 時間是在上一次 LOG 備份之後,資料庫便會停留在未復原的狀態,如同使用 NORECOVERY 執行了 RESTORE LOG 一樣。

如需詳細資訊,請參閱將 SQL Server 資料庫還原至某個時間點 (完整復原模式)

STOPATMARK = { '標示名稱' | 'lsn:lsn_number' } [ AFTER '日期時間' ]
指定復原至指定的復原點。 雖然指定的交易包含在復原中,但除非最初實際產生這項交易時已認可這項交易,否則便不會認可它。

RESTORE DATABASE 和 RESTORE LOG 都支援 lsn_number 參數。 這個參數會指定記錄序號。

只有 RESTORE LOG 陳述式才支援 mark_name 參數。 這個參數會識別記錄備份中的交易標示。

在 RESTORE LOG 陳述式中,如果省略 AFTER datetime,復原會停在具有指定名稱的第一個標記。 如果指定 AFTER datetime,復原會剛好在 datetime 或之後停在具有指定名稱的第一個標記。

注意

如果指定的標記 LSN 或時間是在上一次 LOG 備份之後,資料庫便會停留在未復原的狀態,如同使用 NORECOVERY 執行了 RESTORE LOG 一樣。

如需詳細資訊,請參閱使用標示的交易以一致的方式復原相關資料庫 (完整復原模式)復原到記錄序號 (SQL Server)

STOPBEFOREMARK = { '標示名稱' | 'lsn:lsn_number' } [ AFTER '日期時間' ]
指定復原至指定的復原點。 指定的交易不會包含在復原中,而且會在使用 WITH RECOVERY 時回復。

RESTORE DATABASE 和 RESTORE LOG 都支援 lsn_number 參數。 這個參數會指定記錄序號。

只有 RESTORE LOG 陳述式才支援 mark_name 參數。 這個參數會識別記錄備份中的交易標示。

在 RESTORE LOG 陳述式中,如果省略 AFTER datetime,復原會正好停在具有指定名稱的第一個標記之前。 如果指定 AFTER datetime,復原會正好在 datetime 之前或之後停在具有指定名稱的第一個標記。

重要

如果部分還原順序排除任何 FILESTREAM 檔案群組,則不支援時間點還原。 您可以強制還原順序,以繼續進行。 但是,絕對無法還原 RESTORE 陳述式中省略的 FILESTREAM 檔案群組。 若要強制時間點還原,請指定 CONTINUE_AFTER_ERROR 選項,連同 STOPAT、STOPATMARK 或 STOPBEFOREMARK 選項。 如果您指定 CONTINUE_AFTER_ERROR,則部分還原順序會成功,而 FILESTREAM 檔案群組則會變成無法復原。

結果集

如需結果集的詳細資訊,請參閱下列文章:

備註

如需其他備註的詳細資訊,請參閱下列文章:

指定備份組

「備份組」包含單次成功備份作業的備份。 RESTORE、RESTORE FILELISTONLY、RESTORE HEADERONLY 和 RESTORE VERIFYONLY 陳述式會在位於指定之單一或多重備份裝置上媒體集內單一備份組上操作。 您應該在媒體集內指定所需的備份。 您可以使用 RESTORE HEADERONLY 陳述式來取得備份組的 backup_set_file_number

用於指定要還原之備份組的選項為:

FILE ={ backup_set_file_number | @backup_set_file_number }

其中,backup_set_file_number 表示媒體集中的備份位置。 backup_set_file_number 為 1 (FILE = 1),表示備份媒體的第一個備份組;backup_set_file_number 為 2 (FILE = 2),表示第二個備份組,依此類推。

這個選項的行為會隨陳述式而不同,如下表中所述:

引數 備份組 FILE 選項的行為
RESTORE 預設的備份組檔案編號為 1。 RESTORE 陳述式中只允許使用一個備份組 FILE 選項。 依序指定備份組很重要。
RESTORE FILELISTONLY 預設的備份組檔案編號為 1。
RESTORE HEADERONLY 依預設會處理媒體集中的所有備份組。 RESTORE HEADERONLY 結果集會傳回每個備份組的相關資訊,包括它在媒體集中的 [位置]。 若要傳回指定備份組的相關資訊,請使用它的位置編號作為 FILE 選項中的 backup_set_file_number 值。

注意:針對磁帶媒體,RESTORE HEADER 只會處理已載入磁帶上的備份組。
RESTORE VERIFYONLY backup_set_file_number 預設值為 1。

注意

用來指定備份組的這個 FILE 選項,和用來指定資料庫檔案的 FILE 選項無關,FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }。

WITH 選項的支援摘要

只有 RESTORE 陳述式支援下列 WITH 選項:BLOCKSIZE、BUFFERCOUNT、MAXTRANSFERSIZE、PARTIAL、KEEP_REPLICATION、{ RECOVERY | NORECOVERY | STANDBY }、REPLACE、RESTART、RESTRICTED_USER 和 { STOPAT | STOPATMARK | STOPBEFOREMARK }

注意

只有 RESTORE DATABASE 支援 PARTIAL 選項。

下表列出一或多個陳述式所用的 WITH 選項,指出哪些陳述式支援各個選項。 核取記號 (√) 表示支援該選項;破折號 (-) 表示不支援該選項。

WITH 選項 RESTORE RESTORE FILELISTONLY RESTORE HEADERONLY RESTORE LABELONLY RESTORE REWINDONLY RESTORE VERIFYONLY
{ CHECKSUM

| NO_CHECKSUM }
-
{ CONTINUE_AFTER_ERROR

| STOP_ON_ERROR }
-
FILE1 - -
LOADHISTORY - - - - -
MEDIANAME -
MEDIAPASSWORD -
MOVE - - - -
PASSWORD - -
{ REWIND | NOREWIND } 只有 REWIND 只有 REWIND 只有 REWIND -
STATS - - - -
{ UNLOAD | NOUNLOAD }

1 FILE =backup_set_file_number,此有別於 {FILE | FILEGROUP}。

權限

如需權限的詳細資訊,請參閱下列文章:

範例

如需範例,請參閱下列文章:

下一步