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

SQL Server 資料庫還原完整指南:從備份到 MDF 掛載

     編輯:關於SqlServer

前言

資料庫還原是 DBA 的核心技能之一。本文整理三種主流還原策略,涵蓋正規備份還原、資料庫分離/附掛、以及單一 MDF 檔案緊急掛載,並提供 T-SQL 指令速查。

方案一:正規備份還原(最推薦)

透過完整備份(Full Backup)搭配差異/記錄備份,可實現時間點還原(Point-in-Time Recovery),資料一致性最高。

圖形化操作 (SSMS)

  1. 在「物件總管」右鍵資料庫 → 工作 → 還原 → 資料庫。
  2. 選取備份裝置(磁碟/URL),指定還原目標與選項(覆寫、重置位置等)。
  3. 確認後執行。

T-SQL 指令

RESTORE DATABASE [TestDB]
FROM DISK = N'C:\Backup\TestDB_Full.bak'
WITH REPLACE, STATS = 5,
MOVE N'TestDB' TO N'C:\Data\TestDB.mdf',
MOVE N'TestDB_log' TO N'C:\Log\TestDB_log.ldf';

提示:若需還原至特定時間點,請在 WITH 子句加入 STOPAT = 'YYYY-MM-DD HH:MM:SS' 並依序套用記錄備份。

方案二:sp_attach_db 快速掛載(需 MDF + LDF)

適用於資料庫已正確分離,或將資料庫檔案複製至新伺服器的情境。

EXEC sp_attach_db 
    @dbname = N'Pubs',
    @filename1 = N'C:\MSSQL7\Data\pubs.mdf',
    @filename2 = N'C:\MSSQL7\Data\pubs_log.ldf';

風險提示:實務上偶見掛載後資料庫變為 READ_ONLY,需額外執行 ALTER DATABASE [Pubs] SET READ_WRITE 修正。

方案三:sp_attach_single_file_db 僅憑 MDF 緊急掛載

當遺失 LDF 記錄檔,或只有單一 MDF 檔案時的救命稻草。SQL Server 會自動重建空的記錄檔。

EXEC sp_attach_single_file_db 
    @dbname = N'Pubs',
    @physname = N'C:\MSSQL7\Data\pubs.mdf';

適用場景:硬碟故障只救回 MDF、未做備份的緊急搶救。注意:未提交的交易將遺失,資料一致性較低,務必在掛載後立即 DBCC CHECKDB 驗證。

總結對照表

方案前置條件資料完整性操作複雜度
備份還原完整備份檔案最高(可時間點還原)中
sp_attach_dbMDF + LDF 完整高(分離時一致)低
sp_attach_single_file_db僅 MDF中低(遺失未提交交易)最低
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved