Ubuntu系统下MSSQL Server恢复bak文件失败求助
解决SQL Server数据库恢复路径错误问题
问题原因
你的备份文件demodb.bak中保存了原数据库(WideWorldImporters)在Windows系统的存储路径(D盘的那个路径),但当前你在Ubuntu系统上执行恢复,该路径不存在,因此触发错误。
解决步骤
1. 查看备份文件中的文件信息
先执行以下命令,获取备份里的逻辑文件名和原始存储路径:
sqlcmd -S localhost -U SA -Q "RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/data/demodb.bak'"
执行后会输出类似结果(逻辑名可能为WideWorldImporters和WideWorldImporters_log):
LogicalName PhysicalName
WideWorldImporters D:\Program Files\Microsoft SQL Server\MSSQL13.SQL16\MSSQL\DATA\WideWorldImporters.mdf
WideWorldImporters_log D:\Program Files\Microsoft SQL Server\MSSQL13.SQL16\MSSQL\DATA\WideWorldImporters.ldf
2. 使用MOVE子句指定新路径恢复
根据第一步得到的逻辑名,修改恢复命令,用MOVE将每个文件映射到Ubuntu的/var/opt/mssql/data/路径下:
sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, RECOVERY, STATS = 5, MOVE N'WideWorldImporters' TO N'/var/opt/mssql/data/demodb.mdf', MOVE N'WideWorldImporters_log' TO N'/var/opt/mssql/data/demodb.ldf'"
注意:
- 把命令中的
WideWorldImporters和WideWorldImporters_log替换成你实际查询到的逻辑名 - 将
NORECOVERY改为RECOVERY,若不需要后续还原日志,这样恢复完成后数据库即可直接使用
内容的提问来源于stack exchange,提问作者Ishmeet Singh
相关产品推荐
相关产品推荐

