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

时间:2018-02-28 21:05:31

标签: sql-server ubuntu-16.04 database-restore

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

给出以下Transact-SQL:

x.x.x.x   domain.tld

结果:

subroutine Test
implicit none
real, dimension(3600000) :: Alpha,Sigma
open(10, file='Alpha.txt')
read(10, *) Alpha
Sigma = (87.6*2)/((87.6*(sin(Alpha))**2)+(2*cos(Alpha)**2))
end subroutine

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

/var/opt/mssql/mssql.conf:

import matplotlib.pyplot as plt 
import numpy as np 
import Sigma

print(Sigma._doc_)

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

基什内尔是对的。你的错误说明了这一点:

“文件'db_log'无法还原到'D:\ Program Files \ Microsoft SQL 服务器\ MSSQL12.MSSQLSERVER2014 \ MSSQL \ DATA \ db_log.ldf”。使用WITH MOVE到
确定文件的有效位置。“

这是恢复命令的样子:

USE [master];
GO
RESTORE DATABASE [db] FROM DISK = N'/var/opt/mssql/db.bak'
WITH MOVE '<file_name>' TO '<file_location>'
, MOVE '<file_name>' TO '<file_location>'
...;
GO

假设您有一个目录/data/,数据库有两个文件(一个数据文件和一个日志文件)。以下是实践中的陈述:

USE [master];
GO
RESTORE DATABASE [db] FROM DISK = N'/var/opt/mssql/db.bak'
WITH MOVE 'db' TO '/data/db.mdf'
, MOVE 'db_log' TO '/data/db_log.ldf'
...;
GO

记住Linux区分大小写。如果您不知道在哪里可以放置日志和数据文件。将其粘贴在与master数据库(exec sp_helpdb'master')相同的位置。

爱与亲吻, A -