嘗試還原備份檔 (.bak) 覆蓋現有同名資料庫時,常遇到錯誤 3154:「備份集中的資料庫備份與現有的 'DBName' 資料庫不同」。GUI 介面往往失敗,但 T-SQL RESTORE ... WITH REPLACE, MOVE 可成功繞過。
REPLACE 與檔案重新配置路徑 (MOVE)。USE master;
GO
RESTORE DATABASE [AdventureWorks]
FROM DISK = N'E:\databasebackup\AdventureWorks.bak'
WITH REPLACE,
MOVE N'AdventureWorks_Data' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.5\MSSQL\Data\AdventureWorks.mdf',
MOVE N'AdventureWorks_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL.5\MSSQL\Data\AdventureWorks_log.ldf';
GO
| 參數 | 用途 |
|---|---|
REPLACE | 允許覆寫現有同名資料庫,即使備份集來源不同 |
MOVE '邏輯檔名' TO '實體路徑' | 指定資料/記錄檔還原後的實體位置,避免路徑衝突 |
RESTORE FILELISTONLY FROM DISK = N'E:\databasebackup\AdventureWorks.bak';
-- 結果欄位:LogicalName, PhysicalName, Type (D=Data, L=Log), ...
將查得的 LogicalName 填入 MOVE 子句。
客戶 VPS 上還原
ssc123失敗,錯誤 3154。備份檔內邏輯名為panydb/panydb_log。執行:USE master; RESTORE DATABASE ssc123 FROM DISK = N'E:\1.bak' WITH REPLACE, MOVE N'panydb' TO N'E:\MSSQL.1\MSSQL\Data\ssc123.mdf', MOVE N'panydb_log' TO N'E:\MSSQL.1\MSSQL\Data\ssc123_log.ldf';成功還原並自動升級資料庫版本 (539 → 611)。
BACKUP DATABASE 現有資料庫 (以防萬一)。RESTORE ... WITH NORECOVERY 搭配記錄備份還原至指定時間點。