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

chi*_*ef7 5 web-deployment msdeploy webdeploy dacpac

我们有一个数据库项目,其视图连接到另一个数据库中的表.另一个数据库采用不同的解决方案.在我们从其他数据库添加对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进入包并且部署成功完成?

chi*_*ef7 2

最后我们不得不:

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

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

  • 感谢更新。值得注意的是,要重新计算校验和,最简单的方法是使用 CertUtil(Windows 自带): CertUtil -hashfile .\model.xml SHA256 (2认同)