温馨提示×

怎样在CentOS上恢复SQL Server数据

小樊
51
2025-09-26 18:36:09
栏目: 云计算

在CentOS上恢复SQL Server数据的步骤

一、准备工作

  1. 确认备份文件:确保拥有最新的有效数据库备份文件(常见格式为.bak.trn)。若备份文件损坏或丢失,需先尝试修复(如使用RESTORE VERIFYONLY命令验证备份完整性)或获取新的备份。
  2. 安装必要工具:若需通过命令行恢复,需提前安装mssql-tools(包含sqlcmd工具),执行命令:sudo yum install -y mssql-tools
  3. 停止SQL Server服务:为避免恢复过程中数据冲突,需停止SQL Server服务,命令:sudo systemctl stop mssql-server

二、使用SQL Server Management Studio (SSMS) 恢复

  1. 复制备份文件:将备份文件(如your_database.bak)复制到SQL Server实例的目标目录(如/var/opt/mssql/backup/)。
  2. 连接SQL Server实例:打开SSMS,输入服务器名称(如localhost)、身份验证方式(建议使用sa账户及密码)并连接。
  3. 执行恢复操作
    • 展开“数据库”文件夹,右键点击目标数据库(或选择“新建数据库”),选择“任务”→“还原”→“数据库”;
    • 在“常规”页面,选择“设备”,点击“浏览”添加备份文件;
    • 切换至“选项”页面,勾选“覆盖现有数据库(WITH REPLACE)”,并选择“恢复数据库(WITH RECOVERY)”(若需恢复后续事务日志,可选择“WITH NORECOVERY”);
    • 点击“确定”开始恢复。
  4. 重启服务:恢复完成后,启动SQL Server服务:sudo systemctl start mssql-server

三、使用T-SQL命令恢复

  1. 以单用户模式启动SQL Server(可选,避免并发连接干扰):命令:sudo /opt/mssql/bin/sqlservr -m
  2. 连接实例:打开终端,执行sqlcmd -S localhost -U sa -P your_password(替换your_passwordsa账户密码)。
  3. 执行恢复命令:输入以下命令(替换数据库名称备份文件路径):
    RESTORE DATABASE [数据库名称] FROM DISK '/备份文件路径/备份文件名.bak' WITH REPLACE, RECOVERY; 
    若需恢复事务日志(如增量备份),需追加日志文件路径:
    RESTORE LOG [数据库名称] FROM DISK '/备份文件路径/日志文件名.trn' WITH RECOVERY; 
    输入GO执行命令。
  4. 退出并重启服务:输入QUIT退出sqlcmd,然后启动SQL Server服务:sudo systemctl start mssql-server

四、使用mssql-tools恢复

  1. 连接实例:执行sqlcmd -S MSSQLSERVER -d your_database -E-E表示Windows身份验证,若使用sa账户则用-U sa -P your_password)。
  2. 执行恢复命令:同T-SQL命令步骤中的命令,输入后按GO执行。
  3. 验证恢复结果:执行SELECT name, state_desc FROM sys.databases WHERE name = '数据库名称',确认数据库状态为ONLINE

五、恢复后检查与修复

  1. 验证数据完整性:使用DBCC CHECKDB命令检查数据库一致性,示例:
    USE [数据库名称]; DBCC CHECKDB WITH NO_INFOMSGS; 
    若存在错误,可使用DBCC CHECKDB (数据库名称, REPAIR_ALLOW_DATA_LOSS)修复(谨慎使用,可能导致数据丢失)。
  2. 重建索引:对大型表重建索引以提升性能,示例:
    USE [数据库名称]; EXEC sp_MSforeachtable @command1="ALTER INDEX ALL ON ? REBUILD"; ```。 
  3. 更新统计信息:让查询优化器生成高效执行计划,示例:
    USE [数据库名称]; EXEC sp_updatestats; ```。

0