6

我们有一个数据库项目,其中包含连接到另一个数据库中的表的视图。另一个数据库在不同的解决方案中。在我们从另一个数据库中添加对 DacPac 的引用之前,它无法构建。我相信这些视图被认为是“复合数据库对象”,因为它们引用的对象不是作为脚本包含在数据库中,而是在 DacPac 中引用。我们可以成功地将这个项目从VS部署到目标数据库。

现在我们正在尝试通过 MSDeploy 自动化部署。过去,我们通过从清单创建一个包,成功地使用 DacPacs 部署了非复合数据库项目。例如:

但在这种情况下,部署失败并出现以下错误:

错误 SQL0:无法解析来自名为“Other.dacpac”的源对外部元素的引用,因为没有加载此类源。警告 SQL72025:没有提供文件供参考 Other.dacpac;部署可能会失败。创建包时,原始引用文件位于 D:\BUILDS\6\CORE SERVICES\ACME DB (DEV2-DEPLOY)\SOURCES\ACME.SQLDEPLOY\DACPACS\Other.DACPAC。

错误:添加引用时出错。部署无法继续。错误计数:1。

是否有确保引用的 DacPac 将其放入包中并成功完成部署的技巧?

4

2 回答 2

2

最后我们不得不:

  • 解压 DacPac
  • 将引用的 DacPac 的路径更改为相对路径
  • 重新计算校验和并更新它
  • 重新压缩 DacPac

不理想,但最终我们现在有了一个 DacPac 引用 DacPac 的自动化部署过程。

于 2015-03-03T19:33:28.753 回答
1

这是一个老问题,但我们发现如果在引用的路径上找不到 DACPAC,您可以将其包含在与引用 DACPAC 相同的目录中。

例如,如果ABC.dacpac引用 msdb 数据库,则引用位置应位于C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\120\SqlSchemas\msdb.dacpac

但是,您可以复制msdb.dacpac到与它相同的目录ABC.dacpacMicrosoft.SqlServer.Dac.DacServices找到它

于 2017-09-28T15:45:38.187 回答