我正在Windows机器上使用sqlpackage构建数据库dacpac。该项目包含对master.dacpac
我将dacpac移至linux计算机(mssql-server-linux
docker映像)并还原数据库。
deploy-database.sh
# publish dacpac using sqlpackage
./sqlpackage/sqlpackage /Action:Publish /sf:"/MyDb.dacpac" /tu:sa /tp:Password1 /tdn:MyDb /tsn:localhost
错误:
没有提供文件供参考master.dacpac;部署可能会失败。创建包时,原始引用文件为 位于C:$(Windows机器路径)\ MASTER.DACPAC。初始化中 部署(失败) 部署计划生成期间发生错误。部署无法继续。错误SQL0:引用来自的外部元素 无法解析名为“ master.dacpac”的源,因为没有 这样的源已加载。警告SQL72025:没有提供文件 参考master.dacpac;部署可能会失败。当包装是 创建后,原始引用文件位于C:$(windows机器 路径)\ MASTER.DACPAC。
添加引用时发生错误。部署无法 继续。命令'/ bin / sh -c sh /deploy-database.sh'返回一个 非零代码:1
我尝试将master.dacpac
直接添加到项目中,也将其复制到docker映像中,但是会发生相同的错误。
如何在引用了master.dacpac的Linux环境中还原dapac?
答案 0 :(得分:2)
我遇到了类似的问题,我的解决方案是重命名对我有用的dacpac文件大写(例如:MASTER.DACPAC
),以及将包含dacpac文件的目录设置为工作目录。
答案 1 :(得分:1)
我尝试直接将master.dacpac添加到项目中,并且 将其复制到docker映像,但发生相同的错误。
确保master.dacpac
文件在当前工作目录中。由于您的MyDb.dacpac
文件位于根目录中,因此请在此处复制master.dacpac
文件,然后在根目录的上下文中执行sqlpackage
命令。
下面的示例指定了对sqlpackage
的绝对引用(如果它不在您的路径中)和对用户dacpac的相对引用(尽管绝对引用也可以)。
cd /
/sqlpackage/sqlpackage /Action:Publish /sf:"MyDb.dacpac" /tu:sa /tp:Password1 /tdn:MyDb /tsn:localhost