centos

CentOS下SQL Server的数据库恢复方法

小樊
56
2025-09-24 14:44:48
栏目: 云计算

CentOS下SQL Server数据库恢复方法

一、准备工作

  1. 确认备份文件:确保拥有最新的数据库备份文件(通常为.bak格式,事务日志备份为.trn格式),且备份文件未被损坏。
  2. 停止SQL Server服务:恢复前需停止服务以避免文件占用,执行命令:sudo systemctl stop mssql-server
  3. 复制备份文件:将备份文件复制到SQL Server实例的数据目录(默认路径为/var/opt/mssql/data/)或其他可访问目录。
  4. 启动SQL Server服务:恢复完成后启动服务,命令:sudo systemctl start mssql-server

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

  1. 连接实例:打开SSMS,输入CentOS服务器的IP地址、端口(默认1433)及SA账户密码,连接到SQL Server实例。
  2. 启动恢复向导:在对象资源管理器中展开“数据库”节点,右键点击“数据库”,选择“任务”→“还原”→“数据库”。
  3. 配置恢复选项
    • 选择“设备”,点击“浏览”定位备份文件;
    • 在“常规”页面确认数据库名称,选择“覆盖现有数据库”;
    • 切换至“选项”页面,勾选“WITH RECOVERY”(默认)以恢复数据库至可用状态,若需后续应用事务日志则选“WITH NORECOVERY”。
  4. 执行恢复:点击“确定”开始恢复,完成后刷新数据库列表验证状态。

三、使用T-SQL命令恢复

  1. 进入命令行工具:使用sqlcmd连接到SQL Server实例,命令:sqlcmd -S localhost -U sa -P your_password
  2. 执行恢复命令
    • 完整备份恢复RESTORE DATABASE [数据库名称] FROM DISK '/备份文件路径/备份文件名.bak' WITH REPLACE, RECOVERY;REPLACE用于覆盖现有数据库,RECOVERY恢复至可用状态)。
    • 差异备份恢复(需先恢复完整备份):RESTORE DATABASE [数据库名称] FROM DISK '/备份文件路径/差异备份文件名.bak' WITH NORECOVERY;NORECOVERY保留数据库为恢复状态,等待事务日志)。
    • 事务日志恢复(需先恢复完整备份和差异备份):RESTORE LOG [数据库名称] FROM DISK '/备份文件路径/事务日志文件名.trn' WITH RECOVERY;RECOVERY完成恢复流程)。
  3. 退出命令行:输入QUIT退出sqlcmd

四、使用mssql-tools恢复

  1. 安装mssql-tools:通过yum安装命令行工具,命令:sudo yum install -y mssql-tools
  2. 连接实例并恢复:使用sqlcmd执行T-SQL恢复命令(步骤同“使用T-SQL命令恢复”),例如:RESTORE DATABASE [YourDB] FROM DISK '/backups/YourDB.bak' WITH REPLACE, RECOVERY;

五、恢复后检查与修复

  1. 验证数据库状态:通过SSMS或sqlcmd执行SELECT name, state_desc FROM sys.databases WHERE name = '数据库名称';,确认state_desc为“ONLINE”。
  2. 检查数据完整性:执行DBCC CHECKDB([数据库名称]) WITH NO_INFOMSGS, ALL_ERRORMSGS;,修复错误(若有):DBCC CHECKDB([数据库名称], REPAIR_ALLOW_DATA_LOSS);(谨慎使用,可能导致数据丢失)。
  3. 重建索引与更新统计信息:优化数据库性能,例如:EXEC sp_MSforeachtable @command1="ALTER INDEX ALL ON ? REBUILD";(重建所有表索引),UPDATE STATISTICS [数据库名称].[架构名].[表名];(更新指定表统计信息)。

0
看了该问题的人还看了