CentOS上SQL Server数据恢复方法
在进行数据恢复前,需完成以下基础操作:
sudo systemctl stop mssql-server。/var/opt/mssql/backup/)。SSMS是图形化工具,适合不熟悉命令行的用户:
适合自动化或脚本化场景,通过sqlcmd工具执行命令:
sudo /opt/mssql/bin/sqlservr -m。sqlcmd -S localhost -U sa -P your_password,进入命令行界面。数据库名称、备份文件路径):RESTORE DATABASE [数据库名称]
FROM DISK '/备份文件路径/备份文件名.bak'
WITH REPLACE, RECOVERY;
若需恢复事务日志,追加命令:RESTORE LOG [数据库名称]
FROM DISK '/备份文件路径/日志文件名.trn'
WITH RECOVERY;
QUIT退出sqlcmd,执行sudo systemctl start mssql-server启动SQL Server服务。mssql-tools是微软提供的命令行工具,简化了备份与恢复操作:
sudo yum install -y mssql-tools,安装完成后将/opt/mssql-tools/bin/添加至PATH环境变量。sqlcmd执行T-SQL恢复命令(同第三步),或通过bcp工具导出/导入数据(适用于大规模数据迁移)。若需恢复至特定时间点(如误删除数据前),需结合完整备份与事务日志备份:
RESTORE DATABASE命令恢复最新完整备份,添加WITH NORECOVERY(保留数据库用于日志恢复)。WITH RECOVERY(使数据库可用)。RESTORE DATABASE [数据库名称]
FROM DISK '/备份路径/完整备份.bak'
WITH NORECOVERY;
RESTORE LOG [数据库名称]
FROM DISK '/备份路径/日志1.trn'
WITH NORECOVERY;
RESTORE LOG [数据库名称]
FROM DISK '/备份路径/日志2.trn'
WITH STOPAT '2025-10-01 12:00:00', RECOVERY; -- 恢复至指定时间点
DBCC CHECKDB命令检查数据库一致性,示例:USE [数据库名称];
DBCC CHECKDB;
若存在错误,可使用DBCC CHECKDB (数据库名称, REPAIR_ALLOW_DATA_LOSS)修复(谨慎使用,可能导致数据丢失)。USE [数据库名称];
EXEC sp_MSforeachtable 'ALTER INDEX ALL ON ? REBUILD';
USE [数据库名称];
EXEC sp_updatestats;
若未备份且数据丢失,可尝试以下方法: