適用於:SQL Server
本文說明如何使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 將 SQL Server 資料庫還原至新位置,並選擇性地重新命名 SQL Server 中的資料庫。 您可以將資料庫移至新目錄路徑,或是在相同的伺服器執行個體或不同的伺服器執行個體上建立資料庫的複本。
局限性
- 負責還原完整資料庫備份的系統管理員,必須是目前唯一正在使用即將還原之資料庫的人員。
必要條件
當您使用完整或大量記錄復原模式時,您必須先備份作用中交易記錄檔,才能還原資料庫。 如需詳細資訊,請參閱 備份交易記錄。
若要還原加密的資料庫,您必須能夠存取用來加密資料庫的憑證或非對稱金鑰。 如果沒有該憑證或非對稱金鑰,您就無法還原資料庫。 您必須保留用來加密資料庫加密金鑰的憑證,只要您需要備份。 如需詳細資訊,請參閱 SQL Server 憑證和非對稱金鑰。
建議
如需移動資料庫的其他考量,請參閱 使用備份和還原複製資料庫。
如果您將 SQL Server 2005 (9.x) 或更高版本的資料庫還原成 SQL Server,資料庫會自動升級。 通常,資料庫立即變為可用。 不過,如果 SQL Server 2005 (9.x) 資料庫有全文檢索索引,升級程式會匯入、重設或重建索引,視伺服器屬性的
upgrade_option設定而定。 如果升級選項設定為匯入 (upgrade_option = 2) 或重建 (upgrade_option = 0),則在升級期間無法使用全文檢索索引。 根據進行索引的資料數量而定,匯入可能需要數個小時,而重建可能需要 10 倍以上的時間。 此外,當升級選項設定為匯入時,如果全文檢索目錄無法使用,則會重建相關聯的全文檢索索引。 若要變更伺服器內容的upgrade_option設定,請使用 sp_fulltext_service。
安全性
基於安全考慮,我們不建議您從未知或不受信任的來源附加或還原資料庫。 這類資料庫可能包含惡意程式碼,這些程式碼可能會執行非預期的 Transact-SQL 程式碼,或透過修改結構描述或實體資料庫結構來導致錯誤。 使用來源不明或來源不受信任的資料庫之前,請先在非實際執行伺服器的資料庫上執行 DBCC CHECKDB ,同時檢查資料庫中的程式碼,例如預存程序或其他使用者定義程式碼。
權限
如果要還原的資料庫不存在,使用者必須具有 CREATE DATABASE 權限才能執行 RESTORE。 如果資料庫存在, RESTORE 則權限預設為 sysadmin 和 dbcreator 固定伺服器角色的成員,以及資料庫的擁有者 (dbo)。
RESTORE 權限會授與伺服器隨時可用的成員資格資訊的角色。 因為只有在資料庫可存取且未損壞時,才能檢查固定資料庫角色成員資格 (執行時 RESTORE 不一定如此),所以 db_owner 固定資料庫角色 RESTORE 的成員沒有許可權。
將資料庫還原至新位置,並選擇性地使用 SSMS 重新命名資料庫
連線到 SQL Server 資料庫引擎的適當實例,然後在 [物件總管] 中選取伺服器名稱以展開伺服器樹狀結構。
以滑鼠右鍵按一下 [資料庫],然後選取 [還原資料庫...]。「 還原資料庫 」對話方塊隨即開啟。
在 [ 一般 ] 頁面的 [ 來源 ] 區段中,指定要還原的備份集來源和位置。 選取下列其中一個選項:
Database
從下拉式清單中選取要還原的資料庫。 此清單僅包含已根據
msdb備份歷程備份的資料庫。注意
如果備份是從不同的伺服器建立,目的地伺服器將沒有指定資料庫的備份歷程記錄資訊。 在此情況下,請選取 [裝置] ,以便手動指定要還原的檔案或裝置。
裝置
選取瀏覽 (...) 按鈕以開啟 [選取備份裝置 ] 對話方塊。 在 [備份媒體類型] 方塊中,選取列出的其中一種裝置類型。 若要選取 [備份媒體] 方塊中的一部或多部裝置,請選取 [加入]。
將要新增至 [備份媒體 ] 清單的裝置之後,請選取 [ 確定 ] 以返回 [ 一般] 頁面。
在 [來源:裝置:資料庫 ] 清單中,選取應還原的資料庫名稱。
注意
此清單僅在選取 「裝置 」時可用。 只有在所選裝置上具有備份的資料庫才可用。
在 [目的地] 區段中,會將要還原之資料庫的名稱自動填入 [資料庫] 方塊。 若要變更資料庫的名稱,請在 [資料庫] 方塊中輸入新名稱。
在 [還原至 ] 方塊中,保留預設值 [ 至上次備份] ,或選取 [ 時程表 ] 以存取 [備份時程表] 對話方塊,以手動選取停止復原動作的時間點。 如需指定特定時間點的詳細資訊,請參閱 備份時間表 。
在 [要還原的備份組] 方格中,選取要還原的備份。 這個方格會顯示指定位置可用的備份。 依預設,會建議一個復原計畫。 若要覆寫建議的復原計畫,您可以變更方格中的選取項目。 當取消選取較早的備份時,依賴其還原的備份也會自動取消選取。
如需「要還原的備份集」網格中資料行的相關資訊,請參閱「還原資料庫(一般」頁面)。
若要指定資料庫檔案的新位置,請選取 [檔案] 頁面,然後選取 [將所有檔案重新放置到資料夾]。 提供 [資料檔資料夾] 及 [記錄檔資料夾] 的新位置。 如需這個方格的詳細資訊,請參閱還原資料庫 (檔案頁面)。
在 [選項] 頁面上,視需要調整選項。 如需這些選項的詳細資訊,請參閱還原資料庫 (選項頁面)。
將資料庫還原至新位置,並選擇性地使用 T-SQL 重新命名資料庫
(選擇性) 在包含您想要還原之完整資料庫備份的備份組中,決定檔案的邏輯和實體名稱。 此陳述式顯示傳回備份集中包含的資料庫和記錄檔清單的基本語法:
RESTORE FILELISTONLY FROM backup_device WITH FILE = *backup_set_file_number此處,backup_set_file_number 表示媒體集中的備份位置。 您可以使用 RESTORE HEADERONLY 陳述式來取得備份組的位置。 如需詳細資訊,請參閱指定備份組。
此陳述式也支援數個
WITH選項。 如需詳細資訊,請參閱 RESTORE FILELISTONLY。使用 RESTORE DATABASE 陳述式來還原完整資料庫備份。 根據預設,資料和記錄檔會還原到其原始位置。 若要重新定位資料庫,請使用選項
MOVE來重新定位每一個資料庫檔案,並避免與現有檔案衝突。
將資料庫還原至具有新名稱的新位置的基本 Transact-SQL 語法為:
RESTORE DATABASE <new_database_name>
FROM <backup_device> [ , ...n ]
[ WITH
{
[ RECOVERY | NORECOVERY ]
[ , ] [ FILE = { <backup_set_file_number> | @backup_set_file_number } ]
[ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ , ...n ]
} ]
[ ; ]
注意
準備要在不同的磁碟上重新放置資料庫時,您應該確認有足夠的可用空間,並且識別與現有檔案發生衝突的任何可能性。 此驗證牽涉到 RESTORE 陳述式 - VERIFYONLY 陳述式,該陳述式指定您計劃在陳述式中使用的MOVE相同RESTORE DATABASE參數。
下列資訊說明此 RESTORE 陳述式的引數,這些引數與將資料庫還原至新位置有關。 如需這些引數的詳細資訊,請參閱 RESTORE 陳述式。
new_database_name
資料庫的新名稱。
注意
如果您要將資料庫還原至不同的伺服器執行個體,則可以使用原始資料庫名稱,而不是新名稱。
backup_device [ , ...n ]
指定要從中還原資料庫備份的 1 到 64 個備份裝置的逗號分隔清單。 您可以指定實體備份裝置,也可以指定對應的邏輯備份裝置 (如果已定義)。 若要指定實體備份裝置,請使用 DISK or TAPE 選項:
{ 磁碟 |磁帶 } = physical_backup_device_name
如需詳細資訊,請參閱 備份裝置。
{ 復甦 |無恢復 }
如果資料庫使用完整復原模式,您可能必須在還原資料庫之後套用交易記錄備份。 在此情況下,請指定 NORECOVERY 選項。
否則,請使用 RECOVERY 預設選項。
檔案 = { backup_set_file_number | @backup_set_file_number }
識別要還原的備份組。 例如, backup_set_file_number 表示 1 備份媒體上的第一個備份集,而 backup_set_file_number 表示 2 第二個備份集。 您可以使用 RESTORE 陳述式 - HEADERONLY 陳述式來取得備份集的backup_set_file_number。
沒有指定這個選項時,預設值是使用備份裝置上的第一個備份組。
如需詳細資訊,請參閱 RESTORE 引數 (Transact-SQL)。
將 'logical_file_name_in_backup' 移至 'operating_system_file_name' [ , ...n ]
指定要將 指定的 logical_file_name_in_backup 資料或日誌檔還原至 所指定 operating_system_file_name的位置。 針對您要從備份集還原至新位置的每個邏輯檔案指定 MOVE 陳述式。
| 選項 | 描述 |
|---|---|
logical_file_name_in_backup |
指定備份組中資料或記錄檔的邏輯名稱。 備份組中資料或記錄檔的邏輯檔案名稱,會與當初建立備份組時資料庫中的邏輯名稱相符。 附註: 若要從備份集取得邏輯檔案清單,請使用 RESTORE 陳述式 - FILELISTONLY。 |
operating_system_file_name |
指定 所 logical_file_name_in_backup指定檔案的新位置。 檔案將還原至這個位置。或者, operating_system_file_name 為還原的檔案指定新的檔案名稱。 如果您要在相同的伺服器執行個體上建立現有資料庫的副本,則需要新名稱。 |
n |
預留位置,指出您可以指定其他 MOVE 陳述式。 |
範例 (Transact-SQL)
此範例會建立名為 by restore 範例資料庫備份的新資料庫MyAdvWorks,其中包含兩個檔案: AdventureWorks2025AdventureWorks2025 和 _DataAdventureWorks2025。_Log 這個資料庫會使用簡單復原模式。
AdventureWorks2025 資料庫已經存在伺服器執行個體上,因此備份中的檔案都必須還原至新的位置。 此 RESTORE FILELISTONLY 陳述式可用來判斷要還原之資料庫中檔案的數目及名稱。 此資料庫備份是備份裝置上的第一個備份組。
注意
備份和還原交易記錄檔的範例 (包括時間點還原) 會使用 MyAdvWorks_FullRM 從 建立 AdventureWorks2025的資料庫,就像下列 MyAdvWorks 範例一樣。 不過,必須使用下列 Transact-SQL 陳述式,變更產生的 MyAdvWorks_FullRM 資料庫,以使用完整復原模型: ALTER DATABASE <database_name> SET RECOVERY FULL。
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2022_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2022_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2022_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
如需如何建立資料庫完整 AdventureWorks2025 資料庫備份的範例,請參閱 建立完整資料庫備份。