在 SQL Server 2000 企業管理器中執行「所有工作 → 還原資料庫 → 從裝置」,勾選「強制還原覆寫現有資料庫」後,若出現 「裝置啟動錯誤,請使用 WITH MOVE 選項來指定該檔案的有效位置」**,根本原因極可能是還原目標路徑不存在或邏輯檔名與實體路徑不符**。本文提供兩種圖形化與腳本雙軌解法,並附贈修改資料表擁有者(Owner)的實用技巧。
.bak 檔。D:\MSSQL\Data\),邏輯檔名保持不變即可。核心原則:實體路徑必須在目標伺服器上真實存在**,否則 SQL Server 無法建立檔案,仍會拋出同樣錯誤。
RESTORE DATABASE [TargetDB]
FROM DISK = 'D:\Backup\SourceDB.bak'
WITH REPLACE, -- 強制覆寫
MOVE 'SourceDB_Data' TO 'D:\MSSQL\Data\TargetDB.mdf', -- 邏輯檔名 → 新實體路徑
MOVE 'SourceDB_Log' TO 'D:\MSSQL\Log\TargetDB_Log.ldf',
STATS = 10; -- 顯示進度
執行前請先用 RESTORE FILELISTONLY FROM DISK = '...' 確認備份檔內的邏輯檔名,再對應 MOVE 子句。
遷移或還原後,常發現資料表擁有者為特定登入(如 User1.TableA),導致預存程序或應用程式因預設 schema 為 dbo 而查詢失敗。兩種修正方式:
dbo → 存檔。-- 僅需執行一次,第二次執行會報錯(因已無非 dbo 物件)
EXEC sp_MSforeachtable 'EXEC sp_changeobjectowner ''?'', ''dbo''';
注意:sp_changeobjectowner 在 SQL Server 2005+ 已棄用,新版本請改用 ALTER SCHEMA dbo TRANSFER [OldSchema].[TableName]。
DBCC CHECKDB 驗證一致性。掌握「路徑對齊」與「擁有者統一」兩大關鍵,SQL Server 2000 資料庫遷移還原將不再是噩夢。