MSDeploy/WebDeploy - 通过 DacPac 部署复合数据库项目



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

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

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

错误 SQL0:从名为的源中引用外部元素 无法解析"Other.dacpac",因为没有这样的源 加载。 警告SQL72025:未提供任何文件以供参考 其他.dacpac;部署可能会失败。创建包时, 原始引用文件位于 D:\BUILDS\6\CORE SERVICES\ACME DB (DEV2-DEPLOY(\SOURCES\ACME.SQLDEPLOY\DACPACS\Other.DACPAC.

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

是否有技巧可以确保引用的 DacPac 进入包并成功完成部署?

最后我们不得不:

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

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

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

例如,如果ABC.dacpac引用 msdb 数据库,则引用位置应位于 C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDEExtensionsMicrosoftSQLDBExtensionsSqlServer120SqlSchemasmsdb.dacpac

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

相关内容

  • 没有找到相关文章

最新更新