10

我正在 Windows 机器上使用 sqlpackage 构建数据库 dacpac。该项目包含对master.dacpac

我将 dacpac 移动到 linux 机器(dockermssql-server-linux映像)并恢复数据库。

部署数据库.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。Initializing deployment (Failed) 部署计划生成过程中出错。部署无法继续。错误 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?

4

2 回答 2

2

我有一个类似的问题,我的解决方案是重命名 dacpac 文件大写,(例如:)MASTER.DACPAC这对我有用,以及使包含 dacpac 文件的目录成为工作目录。

于 2020-05-13T23:15:43.650 回答
1

我尝试将 master.dacpac 直接添加到项目中,并将其复制到 docker 映像中,但发生了同样的错误。

确保master.dacpac文件在当前工作目录中。由于您的MyDb.dacpac文件存在于根目录中,因此将master.dacpac文件复制到那里并sqlpackage在根目录的上下文中执行命令。

下面的示例指定了对用户 dacpac 的绝对引用sqlpackage(如果它不在您的路径中)和对用户 dacpac 的相对引用(尽管绝对引用也可以使用)。

cd /
/sqlpackage/sqlpackage /Action:Publish /sf:"MyDb.dacpac" /tu:sa /tp:Password1 /tdn:MyDb /tsn:localhost
于 2019-03-24T22:23:21.917 回答