Sql server ';无法打开物理文件';尝试使用mssql cli将数据库连接到Linux for Docker引擎上的Microsoft SQL Server时出错
我正在运行我正在通过OSX主机访问的 我正在尝试附加一个现有数据库,其中包含.mdf和.ldf文件 但是,当我运行命令时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
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代理的帐户是否具有访问上述位置的权限?