首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 使用新名稱還原資料庫:RESTORE FILELISTONLY 與 MOVE 選項實戰

     編輯:關於SqlServer

情境

需將備份還原為不同名稱的資料庫 (如:建立測試環境、副本驗證),且檔案路徑必須變更,避免與原資料庫衝突。

兩步驟流程

步驟 1:查詢備份檔內部檔案清單

RESTORE FILELISTONLY FROM MyNwind2;

輸出關鍵欄位:

  • LogicalName:邏輯檔案名 (如 MyNwind2_data, MyNwind2_log)
  • PhysicalName:原始實體路徑
  • Type:D=資料檔, L=記錄檔

步驟 2:指定新資料庫名稱與 MOVE 選項還原

RESTORE DATABASE MyNwind2_Test
FROM MyNwind2
WITH RECOVERY,
MOVE 'MyNwind2_data' TO 'D:\MyData\MyNwind2_Test_data.mdf',
MOVE 'MyNwind2_log'  TO 'D:\MyData\MyNwind2_Test_log.ldf';
GO

關鍵點

  • WITH RECOVERY:完成還原後立即上線 (預設),若後續還有記錄備份需套用則用 NORECOVERY。
  • 每個邏輯檔案必須對應一個 MOVE 子句,指定新實體路徑。
  • 新路徑目錄必須存在,且 SQL Server 服務帳號具備寫入權限。
  • 邏輯檔案名稱區分大小寫 (依資料庫定序),需與 FILELISTONLY 輸出完全一致。

完整範例腳本

USE master;
GO

-- 1. 取得檔案清單
RESTORE FILELISTONLY FROM MyNwind2;
GO

-- 2. 還原為新資料庫
RESTORE DATABASE MyNwind2_Test
FROM MyNwind2
WITH RECOVERY,
MOVE 'MyNwind2_data' TO 'D:\MyData\MyNwind2_Test_data.mdf',
MOVE 'MyNwind2_log'  TO 'D:\MyData\MyNwind2_Test_log.ldf';
GO

-- 3. 驗證
SELECT name, filename FROM MyNwind2_Test..sysfiles;

常見錯誤與對策

錯誤原因對策
Logical file 'xxx' is not part of database邏輯名拼寫錯誤嚴格依 FILELISTONLY 輸出複製
Access denied / path not found目錄不存在或權限不足建立目錄、授予服務帳號寫入權限
File already exists目標路徑已有同名檔案刪除舊檔或指定不同檔名
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved