CentOS上SQL Server数据恢复指南
在CentOS环境中恢复SQL Server数据库,核心是通过备份文件还原数据,以下是详细的操作流程及注意事项:
确认备份文件可用性
确保拥有最新的完整数据库备份文件(.bak格式,可选事务日志备份.trn文件)。若无备份,数据恢复难度极大,需优先尝试第三方工具(如SysTools SQL Recovery)或专业数据恢复服务。
停止SQL Server服务
为避免恢复过程中数据冲突,需先停止SQL Server服务:
sudo systemctl stop mssql-server 复制备份文件至目标目录
将备份文件(.bak/.trn)复制到SQL Server实例可访问的目录(如/var/opt/mssql/backup/)。
sudo /opt/mssql/bin/sqlservr -m sqlcmd -S localhost -U sa -P your_password RESTORE DATABASE [YourDatabaseName] FROM DISK '/var/opt/mssql/backup/YourDatabaseName.bak' WITH REPLACE, RECOVERY; 若需应用事务日志(如增量恢复),需追加.trn文件路径:RESTORE LOG [YourDatabaseName] FROM DISK '/var/opt/mssql/backup/YourDatabaseName_Log.trn' WITH RECOVERY; GO后按回车,再输入QUIT。sudo yum install -y mssql-tools sqlcmd执行与上述T-SQL相同的恢复命令(参考“使用T-SQL命令恢复”部分)。验证数据库状态
连接SSMS或执行T-SQL命令,检查数据库是否在线:
SELECT name, state_desc FROM sys.databases WHERE name = 'YourDatabaseName'; 若状态为ONLINE,则表示恢复成功。
检查数据完整性
使用DBCC CHECKDB命令检测数据库是否有损坏:
DBCC CHECKDB('YourDatabaseName') WITH NO_INFOMSGS, ALL_ERRORMSGS; 若存在错误,可使用REPAIR_ALLOW_DATA_LOSS选项修复(谨慎使用,可能导致数据丢失):
DBCC CHECKDB('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS); 优化数据库性能
EXEC sp_msforeachtable @command1="ALTER INDEX ALL ON ? REBUILD"; EXEC sp_updatestats; 无备份时的恢复
若无备份,可尝试第三方数据恢复软件(如SysTools SQL Recovery、Recovery for SQL Server),但恢复成功率取决于数据库文件损坏程度。
事务日志恢复(时间点恢复)
若启用了完整恢复模式,可通过事务日志备份恢复到特定时间点(如误删除数据前):
RESTORE DATABASE [YourDatabaseName] FROM DISK '/path/to/full.bak' WITH NORECOVERY; RESTORE LOG [YourDatabaseName] FROM DISK '/path/to/log.trn' WITH STOPAT = '2025-10-16 14:30:00', RECOVERY; /var/opt/mssql/log/errorlog)定位问题。