Ubuntu 上的 MS-SQL:无法恢复 database.bak 文件

mbü*_*mbü 3 sql-server database-restore ubuntu-16.04

我无法恢复数据库备份 (db.bak)。

给定以下 Transact-SQL:

1> RESTORE DATABASE db
2> FROM DISK = '/var/opt/mssql/db.bak' ;
3> GO
Run Code Online (Sandbox Code Playgroud)

结果是:

Msg 5133, Level 16, State 1, Server mbü-lubuntu, Line 1
Directory lookup for the file "D:\Program Files\Microsoft SQL 
Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\db.mdf" failed with the operating     
system error 2(The system cannot find the file specified.).
Msg 3156, Level 16, State 3, Server mbü-lubuntu, Line 1
File 'db' cannot be restored to 'D:\Program Files\Microsoft SQL 
Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\db.mdf'. Use WITH MOVE to     
identify a valid location for the file.
Msg 5133, Level 16, State 1, Server mbü-lubuntu, Line 1
Directory lookup for the file "D:\Program Files\Microsoft SQL 
Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\db_log.ldf" failed with the     
operating system error 2(The system cannot find the file specified.).
Msg 3156, Level 16, State 3, Server mbü-lubuntu, Line 1
File 'db_log' cannot be restored to 'D:\Program Files\Microsoft SQL 
Server\MSSQL12.MSSQLSERVER2014\MSSQL\DATA\db_log.ldf'. Use WITH MOVE to     
identify a valid location for the file.
Msg 3119, Level 16, State 1, Server mbü-lubuntu, Line 1
Problems were identified while planning for the RESTORE statement. Previous 
messages provide details.
Msg 3013, Level 16, State 1, Server mbü-lubuntu, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

我什至想知道,为什么代理要在 Linux 程序中寻找 Windows 路径(D:\Program Files...)?

/var/opt/mssql/mssql.conf:

[EULA]
accepteula = Y

[sqlagent]
enabled = true

[filelocation]
defaultbackupdir = /var/opt/mssql/data/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/data/
Run Code Online (Sandbox Code Playgroud)

谢谢!

kir*_*ner 5

可能是因为数据库是在 Windows 上创建和备份的。数据库记住它来自哪里,并尝试恢复到同一个地方。

正如错误消息指出的那样,您可能需要使用restore 语句WITH MOVE子句。