错误:无法解析来自名为“ master.dacpac”的源中的外部元素的引用

时间:2018-08-31 07:31:05

标签: sql-server docker dacpac sqlpackage

我正在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?

2 个答案:

答案 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