Ubuntu上SQL Server的数据恢复方法有哪些
导读:Ubuntu上SQL Server的数据恢复方法 一、常用恢复方法概览 sqlcmd 命令行恢复:在 Ubuntu 终端使用 sqlcmd 执行 RESTORE DATABASE,适合自动化与无人值守场景。 SSMS 图形界面恢复:在 W...
Ubuntu上SQL Server的数据恢复方法
一、常用恢复方法概览
- sqlcmd 命令行恢复:在 Ubuntu 终端使用 sqlcmd 执行 RESTORE DATABASE,适合自动化与无人值守场景。
- SSMS 图形界面恢复:在 Windows 上的 SSMS 远程连接到 Ubuntu 上的 SQL Server 实例,通过向导完成还原,适合一次性或复杂还原。
- 时间点恢复(PITR):数据库为 FULL 恢复模式 时,利用 完整备份 + 差异备份 + 事务日志备份 恢复到指定时间点。
- 迁移式恢复:将 .bak 从其他环境拷贝到 Ubuntu,使用 MOVE 将数据/日志文件指定到目标路径后还原。
- 第三方工具恢复:当遇到 .mdf/.ldf 损坏 或 无可用备份 时,可考虑商业工具进行页面/日志分析恢复。
二、方法对照与适用场景
| 方法 | 适用场景 | 关键要点 |
|---|---|---|
| sqlcmd 命令行 | 日常恢复、自动化脚本、CI/CD | 使用 RESTORE 命令;必要时配合 MOVE、NORECOVERY/RECOVERY |
| SSMS 图形界面 | 临时操作、复杂还原、需要可视化校验 | 远程连接 Ubuntu 实例;向导化选择备份集与文件映射 |
| 时间点恢复 | 误删数据、需回滚到某一时刻 | 需 FULL 模式;按顺序还原完整→差异→日志,日志用 STOPAT |
| 迁移式恢复 | 跨环境迁移、重建实例 | 先拷贝 .bak;还原时用 MOVE 指定新路径;注意文件权限 |
| 第三方工具 | 无备份或文件损坏 | 仅作补救;优先尝试官方支持渠道与备份 |
三、关键操作要点与命令示例
-
使用 sqlcmd 还原全库(示例)
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "RESTORE DATABASE [YourDB] \ FROM DISK='/var/opt/mssql/backups/YourDB_full.bak' \ WITH RECOVERY"如目标实例上已有同名数据库或需覆盖,可加 WITH REPLACE;若需链式还原(配合差异/日志),首步用 WITH NORECOVERY。
-
时间点恢复步骤(FULL 模式)
- 先做一次当前日志尾备份(便于将数据库还原到故障前一刻)
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "BACKUP LOG [YourDB] TO DISK='/var/opt/mssql/backups/YourDB_tail.trn' WITH NORECOVERY" - 还原完整备份(如存在差异,先还原差异)
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "RESTORE DATABASE [YourDB] \ FROM DISK='/var/opt/mssql/backups/YourDB_full.bak' \ WITH NORECOVERY, REPLACE" - 还原日志到指定时间点(示例:回滚到 2025-12-24 10:00:00)
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "RESTORE LOG [YourDB] \ FROM DISK='/var/opt/mssql/backups/YourDB_log.trn' \ WITH STOPAT='2025-12-24T10:00:00', RECOVERY"
要点:确保数据库恢复模式为 FULL,并按 完整 → 差异(可选) → 日志 的顺序还原。
- 先做一次当前日志尾备份(便于将数据库还原到故障前一刻)
-
迁移式恢复与文件映射
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "RESTORE DATABASE [YourDB] \ FROM DISK='/var/opt/mssql/backups/YourDB_full.bak' \ WITH MOVE 'YourDB_Data' TO '/var/opt/mssql/data/YourDB.mdf', \ MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_log.ldf', \ REPLACE"逻辑文件名(如 YourDB_Data/YourDB_Log)可用以下查询获取:
sqlcmd -S localhost -U SA -P 'YourPassword' \ -Q "RESTORE FILELISTONLY FROM DISK='/var/opt/mssql/backups/YourDB_full.bak'"目标目录需存在且 mssql 用户可写(如 /var/opt/mssql/data)。
四、实用建议与注意事项
- 权限与路径:确保备份目录归 mssql:mssql,权限 700;还原目标路径可写,避免因权限导致失败。
- 恢复顺序与状态:链式还原时中间步骤用 WITH NORECOVERY,最后一步用 WITH RECOVERY;覆盖已有库可加 WITH REPLACE。
- 时间点恢复前提:数据库需为 FULL 恢复模式,并具备可用的 日志备份;否则只能恢复到最近一次备份点。
- 验证完整性:还原后执行 DBCC CHECKDB 校验数据一致性。
- 无备份的应急:若 .mdf/.ldf 损坏且无备份,可尝试第三方恢复工具,但成功率与风险依情况而定,务必先对现有文件做只读拷贝。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上SQL Server的数据恢复方法有哪些
本文地址: https://pptw.com/jishu/779587.html
