CentOS 上 SQL Server 数据库恢复步骤
一 准备与检查
- 确认备份文件可用:通常为 .bak(数据/差异)与 .trn(事务日志)。在 Linux 上通过 sqlcmd 执行还原,RESTORE 是 T‑SQL 命令而非系统命令。必要时先用 SSMS 或 sqlcmd 校验备份可用性。
- 将备份放到实例可访问路径,例如 /var/opt/mssql/backups,并确保 mssql 用户对目录有读写权限:
sudo mkdir -p /var/opt/mssql/backups
sudo chown mssql:mssql /var/opt/mssql/backups
sudo chmod 700 /var/opt/mssql/backups
- 若备份来自云平台或包含多个库,先查看备份集信息:
sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE HEADERONLY FROM DISK=‘/var/opt/mssql/backups/xxx.bak’”
如需指定第 N 个备份集,使用 WITH FILE=N;查看数据/日志文件逻辑名:
sqlcmd -S localhost -U SA -P ‘<密码>’ -Q “RESTORE FILELISTONLY FROM DISK=‘/var/opt/mssql/backups/xxx.bak’”。
二 使用 T‑SQL 还原
三 使用 SSMS 图形界面
- 在 Windows 上用 SSMS 连接到 CentOS 上的 SQL Server 实例,右键 Databases → Restore Database,选择 Device 并添加 .bak。
- 在 Source 选择源库,Destination 可修改目标库名;在 Files 页按需设置数据/日志文件的新路径。
- 若需继续还原日志,首轮选择 Options → Recovery state: RESTORE WITH NORECOVERY;随后对后续日志依次还原,最后一个日志选择 RESTORE WITH RECOVERY。
四 常见问题与验证
- 备份集顺序与时间点:日志还原必须按时间顺序连续执行,缺一环将无法前滚到最终时间点。
- 多库备份集:一个 .bak 可能包含多个备份(如系统库与目标库),用 RESTORE HEADERONLY … WITH FILE=N 指定读取第 N 个备份集。
- 权限与路径:确保运行 SQL Server 的 mssql 用户对备份目录和目标数据目录具备读写权限,且目标目录已存在。
- 一致性校验与后续维护:还原后执行 DBCC CHECKDB 校验一致性,必要时重建索引并更新统计信息,确认应用功能与性能正常。