1. 准备工作
systemctl status mssql-server验证服务处于运行状态。/var/opt/mssql/backup)或网络共享路径(需SQL Server实例有访问权限)。sqlcmd命令行工具(SQL Server自带,可通过apt-get install mssql-tools获取),用于执行T-SQL恢复命令。2. 使用sqlcmd命令行恢复(推荐)
基本语法:通过RESTORE DATABASE命令指定备份文件路径、数据库名称及文件移动选项(避免路径冲突)。
RESTORE DATABASE [目标数据库名]
FROM DISK = '/path/to/backupfile.bak'
WITH REPLACE, RECOVERY,
MOVE '逻辑数据文件名' TO '/var/opt/mssql/data/目标数据库名.mdf',
MOVE '逻辑日志文件名' TO '/var/opt/mssql/data/目标数据库名.ldf';
REPLACE:覆盖现有同名数据库(若目标数据库已存在)。RECOVERY:将数据库恢复至可用状态(若需应用后续日志备份,可先用NORECOVERY)。MOVE:将备份中的逻辑文件(如YourDB_Data、YourDB_Log)映射到Debian系统的物理路径(需提前创建/var/opt/mssql/data目录并赋予权限:chown -R mssql:mssql /var/opt/mssql/data)。示例(带事务日志恢复):若备份包含完整备份+事务日志,需按顺序恢复以实现时间点恢复:
-- 1. 恢复完整备份(不恢复至可用状态)
RESTORE DATABASE [SalesDB]
FROM DISK = '/var/opt/mssql/backup/SalesDB_Full.bak'
WITH NORECOVERY,
MOVE 'SalesDB_Data' TO '/var/opt/mssql/data/SalesDB.mdf',
MOVE 'SalesDB_Log' TO '/var/opt/mssql/data/SalesDB.ldf';
-- 2. 恢复事务日志备份(恢复至指定时间点,如2025-10-30 15:00:00)
RESTORE LOG [SalesDB]
FROM DISK = '/var/opt/mssql/backup/SalesDB_Log.trn'
WITH STOPAT = '2025-10-30 15:00:00', RECOVERY;
3. 使用SQL Server Management Studio (SSMS)恢复(图形界面)
localhost)、身份验证方式(建议使用SA账户,密码需提前配置),点击“连接”。SalesDB),勾选“覆盖现有数据库”。/var/opt/mssql/data/目标数据库名.mdf)。4. 故障排查
mssql用户可读(chmod 644 /path/to/backupfile.bak),且数据目录权限正确(chown -R mssql:mssql /var/opt/mssql/data)。C:\Data\YourDB.mdf)在Debian上不存在,必须通过MOVE选项映射到有效路径,否则恢复失败。ALTER DATABASE [数据库名] SET RECOVERY FULL;设置),否则无法应用事务日志备份。