首页主机资讯centos下sqlserver如何数据恢复

centos下sqlserver如何数据恢复

时间2025-12-16 17:24:03发布访客分类主机资讯浏览1037
导读:CentOS 下 SQL Server 数据恢复实操指南 一 准备与前提 确认有可用的备份文件:数据库备份通常为 .bak,事务日志备份为 .trn。如无有效备份,只能尝试日志解析或第三方修复,成功率受限。 准备恢复环境:安装 mssql...

CentOS 下 SQL Server 数据恢复实操指南

一 准备与前提

  • 确认有可用的备份文件:数据库备份通常为 .bak,事务日志备份为 .trn。如无有效备份,只能尝试日志解析或第三方修复,成功率受限。
  • 准备恢复环境:安装 mssql-tools(含 sqlcmd),并确保 mssql-server 服务可正常启动。
  • 规划文件路径:将备份放到 Linux 路径(如 /var/opt/mssql/backup),并确保 mssql 用户对目录有读权限。
  • 权限与安全:使用具有 sysadmin 权限的账户执行还原;生产环境建议先在测试环境演练。

二 标准恢复流程

  • 步骤 1 拷贝备份到服务器
    示例:将 Windows 生成的备份通过 SFTP 上传到 /var/opt/mssql/backup。在 Linux 上确认文件存在与权限:
    ls -l /var/opt/mssql/backup/*.bak

  • 步骤 2 使用 T-SQL 还原数据库
    基本完整恢复(覆盖同名库):
    RESTORE DATABASE [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB.bak’
    WITH REPLACE, RECOVERY;
    如备份包含多个文件/文件组,先执行 RESTORE FILELISTONLY 查看逻辑名,再用 MOVE 指定新路径:
    RESTORE FILELISTONLY FROM DISK = N’/var/opt/mssql/backup/YourDB.bak’;
    RESTORE DATABASE [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB.bak’
    WITH
    MOVE N’YourDB_Data’ TO N’/var/opt/mssql/data/YourDB.mdf’,
    MOVE N’YourDB_Log’ TO N’/var/opt/mssql/data/YourDB_log.ldf’,
    RECOVERY;

  • 步骤 3 时间点恢复(完整 + 差异 + 日志)

    1. 完整备份(NORECOVERY 保留还原状态)
      RESTORE DATABASE [YourDB]
      FROM DISK = N’/var/opt/mssql/backup/YourDB_FULL.bak’
      WITH NORECOVERY;
    2. 差异备份(如有,NORECOVERY)
      RESTORE DATABASE [YourDB]
      FROM DISK = N’/var/opt/mssql/backup/YourDB_DIFF.bak’
      WITH NORECOVERY;
    3. 事务日志备份(时间点或到某一日志)
      RESTORE LOG [YourDB]
      FROM DISK = N’/var/opt/mssql/backup/YourDB_LOG.trn’
      WITH RECOVERY;
      如需恢复到某个时间点,可在末尾加:
      WITH STOPAT = ‘2025-12-15 10:30:00’, RECOVERY;
  • 步骤 4 验证
    连接数据库并检查可用性:
    SELECT name, state_desc FROM sys.databases WHERE name = N’YourDB’;
    检查完整性:
    DBCC CHECKDB ([YourDB]) WITH NO_INFOMSGS, ALL_ERRORMSGS;
    必要时重建索引、更新统计信息,并进行业务功能验证。

三 常见场景与命令示例

  • 场景 A 覆盖还原到现有库
    RESTORE DATABASE [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB.bak’
    WITH REPLACE, RECOVERY;

  • 场景 B 还原到新库名(避免覆盖)
    RESTORE DATABASE [YourDB_New]
    FROM DISK = N’/var/opt/mssql/backup/YourDB.bak’
    WITH
    MOVE N’YourDB_Data’ TO N’/var/opt/mssql/data/YourDB_New.mdf’,
    MOVE N’YourDB_Log’ TO N’/var/opt/mssql/data/YourDB_New_log.ldf’,
    RECOVERY;

  • 场景 C 仅还原事务日志到指定时间点
    RESTORE LOG [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB_LOG.trn’
    WITH STOPAT = ‘2025-12-15 09:00:00’, RECOVERY;

  • 场景 D 无日志备份时从差异备份回滚
    RESTORE DATABASE [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB_FULL.bak’ WITH NORECOVERY;
    RESTORE DATABASE [YourDB]
    FROM DISK = N’/var/opt/mssql/backup/YourDB_DIFF.bak’ WITH RECOVERY;

四 无备份或备份缺失时的处理

  • 误删表/数据但数据库仍在:可尝试通过事务日志函数 fn_dblog 定位删除操作,再结合备份或第三方工具恢复;此方法对 DELETE 更有效,TRUNCATE 通常无法通过日志直接回滚。
  • 第三方修复工具:如 SysTools SQL Recovery、Stellar Phoenix SQL Database Repair、ApexSQL Recover 等,可扫描 MDF/NDF 并尝试提取表/记录。
  • 极端情况:立即停止写入,进行磁盘级文件恢复,必要时联系专业数据恢复服务。

五 系统数据库与注意事项

  • 系统数据库恢复(如 master):通常需要单用户模式启动实例,使用安装介质或模板重建后再还原系统库;操作复杂且风险高,务必在测试环境演练并严格按官方流程执行。
  • 一般注意事项:
    • 还原前备份当前数据库与关键配置;
    • 使用 MOVE 明确数据/日志文件路径,避免与现有文件冲突;
    • 还原后执行 DBCC CHECKDB、重建索引与更新统计信息;
    • 定期验证备份可用性与恢复演练,确保 RPO/RTO 达标。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos下sqlserver如何数据恢复
本文地址: https://pptw.com/jishu/772989.html
Linux反汇编指令的实例 centos中sqlserver如何权限管理

游客 回复需填写必要信息