通過備份文件恢復(基礎且常用)
恢復前需確認擁有最新的完整數據庫備份文件(.bak或.trn格式)??墒褂肧QL Server Management Studio(SSMS)圖形界面操作:停止SQL Server服務(sudo systemctl stop mssql-server
),將備份文件復制到SQL Server實例的目標目錄,啟動服務(sudo systemctl start mssql-server
),通過SSMS展開“數據庫”節點,右鍵選中目標數據庫,選擇“任務→還原→數據庫”,在“設備”選項中瀏覽并選擇備份文件,確認恢復選項(如“覆蓋現有數據庫”“WITH REPLACE”參數)后執行;也可通過T-SQL命令實現:以單用戶模式啟動SQL Server(sudo /opt/mssql/bin/sqlservr -m
),用sqlcmd工具連接(sqlcmd -S localhost -U sa -P your_password
),執行RESTORE DATABASE [數據庫名稱] FROM DISK '/備份文件路徑/備份文件名.bak' WITH REPLACE, RECOVERY;
命令(將占位符替換為實際名稱和路徑)。
事務日志恢復(精確到特定時間點)
若已配置事務日志備份,可通過日志恢復實現更精準的時間點恢復(如誤刪除數據后的定點還原)。需按順序執行完整備份恢復(RESTORE DATABASE [數據庫名稱] FROM DISK '/完整備份路徑.bak' WITH NORECOVERY;
),再依次恢復事務日志備份(RESTORE LOG [數據庫名稱] FROM DISK '/日志備份路徑_Log.bak' WITH NORECOVERY;
),最后執行RESTORE DATABASE [數據庫名稱] WITH RECOVERY;
完成恢復(“WITH NORECOVERY”表示不恢復數據庫,保留日志鏈;最后一次恢復用“WITH RECOVERY”使數據庫可用)。
數據庫鏡像恢復(高可用場景)
若已設置數據庫鏡像(主數據庫與鏡像數據庫實時同步),當主數據庫故障時,可通過手動切換至鏡像數據庫快速恢復。執行ALTER DATABASE [數據庫名稱] SET PARTNER FAILOVER;
命令,鏡像數據庫將自動提升為主數據庫,無需手動還原備份,適用于需要高可用性的生產環境。
第三方工具恢復(無備份時的補救)
當備份文件丟失或損壞時,可嘗試使用第三方數據恢復軟件(如SysTools SQL Recovery、Recovery for SQL Server),這類工具能掃描SQL Server數據文件(.mdf/.ldf),嘗試恢復丟失的表、視圖、存儲過程等對象。但需注意,恢復效果取決于數據損壞程度,建議優先嘗試備份恢復。
恢復后驗證與修復
恢復完成后,需通過以下步驟確保數據庫完整性與可用性:
DBCC CHECKDB([數據庫名稱]) WITH NO_INFOMSGS, ALL_ERRORMSGS;
命令,檢測數據庫是否存在邏輯或物理錯誤,若有錯誤可使用DBCC CHECKDB([數據庫名稱], REPAIR_ALLOW_DATA_LOSS);
修復(謹慎使用,可能導致數據丟失);ALTER INDEX ALL ON [表名] REBUILD;
),提升查詢性能;UPDATE STATISTICS [表名];
命令,確保查詢優化器生成高效的執行計劃;