Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server ';无法打开物理文件';尝试使用mssql cli将数据库连接到Linux for Docker引擎上的Microsoft SQL Server时出错_Sql Server_Docker_Tsql - Fatal编程技术网

Sql server ';无法打开物理文件';尝试使用mssql cli将数据库连接到Linux for Docker引擎上的Microsoft SQL Server时出错

Sql server ';无法打开物理文件';尝试使用mssql cli将数据库连接到Linux for Docker引擎上的Microsoft SQL Server时出错,sql-server,docker,tsql,Sql Server,Docker,Tsql,我正在运行我正在通过OSX主机访问的 我正在尝试附加一个现有数据库,其中包含.mdf和.ldf文件 但是,当我运行命令时 CREATE DATABASE MyDb ON (FILENAME = '/path/to/MyDb.mdf'), (FILENAME = '/path/to/MyDbLogs.ldf') FOR ATTACH; 我得到一个错误: Unable to open the physical file "/path/to/MyDb.md

我正在运行我正在通过OSX主机访问的

我正在尝试附加一个现有数据库,其中包含.mdf和.ldf文件

但是,当我运行命令时

CREATE DATABASE MyDb  
    ON (FILENAME = '/path/to/MyDb.mdf'),   
    (FILENAME = '/path/to/MyDbLogs.ldf')   
    FOR ATTACH;  
我得到一个错误:

Unable to open the physical file "/path/to/MyDb.mdf". Operating system error 2: "2(The system cannot find the file specified.)".
Unable to open the physical file "/app/path/to/MyDb.mdf". Operating system error 87: "87(The parameter is incorrect.)".
我已验证该文件是否存在于主机上的该位置,例如

$ test -e /path/to/MyDb.mdf && echo file exists || echo file not found
file exists
我还尝试在docker容器中装载包含DB的文件夹,以防它在其中查找,但在这种情况下,我得到错误:

Unable to open the physical file "/path/to/MyDb.mdf". Operating system error 2: "2(The system cannot find the file specified.)".
Unable to open the physical file "/app/path/to/MyDb.mdf". Operating system error 87: "87(The parameter is incorrect.)".

如果我已经验证了文件的位置,那么知道是什么导致了这些错误吗?在Linux for Docker Engine上使用OSX或Microsoft SQL Server时,文件路径有什么特别之处吗

我也遇到了同样的问题,并搜索了这个问题,找到了一个解决方案:执行相同的操作,但不使用*.ldf文件。像这样:

CREATE DATABASE NewDb
    ON (FILENAME = '/var/opt/mssql/data/Olddb.mdf')
    FOR ATTACH;

我正在使用Azure Data Studio for Linux Ubuntu 18。

好的,我现在明白了,缺少的一步是备份文件需要复制到Docker容器中

e、 g

docker exec-它包含名称mkdir/var/opt/mssql/backup

docker exec-it containerName cp/local/path/to/files containerName:/var/opt/mssql/backup

然后连接到数据库后,运行指向容器中路径的查询,例如

CREATE DATABASE MyDb  
    ON (FILENAME = '/var/opt/mssql/backup/MyDb.mdf'),   
    (FILENAME = '/var/opt/mssql/backup/MyDbLogs.ldf')   
    FOR ATTACH;  

运行SQL Server代理的帐户是否具有访问上述位置的权限?