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

SQL Server 2000 還原資料庫「裝置啟動錯誤」完整排除指南

     編輯:關於SqlServer

在 SQL Server 2000 企業管理器中執行「所有工作 → 還原資料庫 → 從裝置」,勾選「強制還原覆寫現有資料庫」後,若出現 「裝置啟動錯誤,請使用 WITH MOVE 選項來指定該檔案的有效位置」**,根本原因極可能是還原目標路徑不存在或邏輯檔名與實體路徑不符**。本文提供兩種圖形化與腳本雙軌解法,並附贈修改資料表擁有者(Owner)的實用技巧。

一、 圖形化介面快速修正(最推薦,零腳本)

  1. 企業管理器左側樹狀圖右鍵點選 「資料庫」節點(非某個特定資料庫) → 「所有工作」 → 「還原資料庫」。
  2. 「一般」頁籤:
     • 還原來源選「從裝置」,點選「選取裝置」加入 .bak 檔。
     • 「還原為資料庫」輸入目標資料庫名稱(可與原名不同)。
  3. 切換至 「選項」頁籤:
     • 勾選 「強制還原覆寫現有資料庫」**。
     • 在下方「還原資料庫檔案為」區塊,手動修改「實體檔案路徑」為目標伺服器實際存在的資料夾**(例如 D:\MSSQL\Data\),邏輯檔名保持不變即可。
  4. 按「確定」執行還原,錯誤即可解除。

核心原則:實體路徑必須在目標伺服器上真實存在**,否則 SQL Server 無法建立檔案,仍會拋出同樣錯誤。

二、 T-SQL 腳本精準控制(適合自動化部署)

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 子句。

三、 附贈:將資料表擁有者從「使用者」改為「dbo」

遷移或還原後,常發現資料表擁有者為特定登入(如 User1.TableA),導致預存程序或應用程式因預設 schema 為 dbo 而查詢失敗。兩種修正方式:

方法 1:企業管理器圖形化(單表操作)

  1. 右鍵該資料表 → 「設計資料表」。
  2. 工具列最右側圖示「條件約束」 → 「資料表」頁籤。
  3. 將「擁有者」下拉選單改為 dbo → 存檔。

方法 2:系統預存程序批次處理(一次修正全庫)

-- 僅需執行一次,第二次執行會報錯(因已無非 dbo 物件)
EXEC sp_MSforeachtable 'EXEC sp_changeobjectowner ''?'', ''dbo''';

注意:sp_changeobjectowner 在 SQL Server 2005+ 已棄用,新版本請改用 ALTER SCHEMA dbo TRANSFER [OldSchema].[TableName]。

四、 常見誤區與檢核清單

  • ❌ 只在「一般」頁籤設定資料庫名,忽略「選項」頁籤的路徑修正。
  • ❌ 目標路徑資料夾不存在、或 SQL Server 服務帳戶無寫入權限。
  • ❌ 邏輯檔名拼寫錯誤(區分大小寫視定序而定)。
  • ✅ 還原完成後,立即執行 DBCC CHECKDB 驗證一致性。
  • ✅ 同步修正資料表擁有者為 dbo,避免後續開發產生 schema 解析錯誤。

掌握「路徑對齊」與「擁有者統一」兩大關鍵,SQL Server 2000 資料庫遷移還原將不再是噩夢。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved