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

SQL Server 備份檔無法還原?改用 MDF/LDF 附加資料庫快速恢復

     編輯:關於SqlServer

情境:.bak 還原失敗(版本不符、檔案損壞、路徑衝突等),但手邊有完整的 .mdf (資料檔) 與 .ldf (記錄檔)。解法:停止服務 → 複製檔案 → sp_attach_db 附加。

快速步驟

  1. 停止 SQL Server 服務:net stop MSSQLSERVER。
  2. 複製 .mdf、.ldf 至目標伺服器資料目錄(如 D:\SQLData\)。
  3. 啟動服務:net start MSSQLSERVER。
  4. SSMS 執行附加:
EXEC sp_attach_db 
    @dbname = N'MyDatabase',
    @filename1 = N'D:\SQLData\MyDatabase.mdf',
    @filename2 = N'D:\SQLData\MyDatabase_log.ldf';

關鍵參數說明

  • @dbname:附加後的資料庫名稱(必須唯一)。
  • @filename1:主資料檔完整路徑(含 N'' 前綴表示 Unicode 字串,避免中文路徑亂碼)。
  • @filename2:記錄檔完整路徑。
  • 最多支援 16 個檔案參數 (@filename1~@filename16)。

僅有 MDF 檔案怎麼辦?

使用 sp_attach_single_file_db(SQL Server 2005+ 已棄用,建議改用 CREATE DATABASE ... FOR ATTACH_REBUILD_LOG):

-- SQL Server 2005/2008/2012/2014/2016/2019 推薦寫法
CREATE DATABASE MyDatabase
ON (FILENAME = N'D:\SQLData\MyDatabase.mdf')
FOR ATTACH_REBUILD_LOG;
GO

此指令會自動重建記錄檔(新記錄檔約 500KB),資料庫進入正常線上狀態。

完整災難恢復流程(Master 損壞)

  1. 重新安裝 SQL Server(保留原資料/記錄檔)。
  2. 使用 sp_attach_db 或 FOR ATTACH_REBUILD_LOG 掛載使用者資料庫。
  3. 若系統資料庫損壞,需重建 Master:Setup /QUIET /ACTION=REBUILDDATABASE ...。

權限需求

僅 sysadmin 固定伺服器角色成員可執行附加作業。

N 前綴重要性

N'路徑' 強制 Unicode 解譯,雙位元組字元(中文路徑/檔名)才不會亂碼導致附加失敗。

掌握 sp_attach_db / FOR ATTACH_REBUILD_LOG,在備份檔不可用時仍能快速恢復資料庫服務。

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