我们有一个数据库项目,其视图连接到另一个数据库中的表。另一个数据库采用不同的解决方案。在我们从其他数据库添加对DacPac的引用之前,这无法构建。我相信这些视图被认为是“复合数据库对象”,因为它们引用的对象不包含在数据库中作为脚本,而是在DacPac中引用。我们可以成功地将此项目从VS部署到目标数据库。
现在我们正在尝试通过MSDeploy自动部署。我们过去通过从清单创建包来成功部署使用DacPacs的非复合数据库项目。例如:
但在这种情况下,部署失败并出现以下错误:
错误SQL0:对名为source的外部元素的引用 'Other.dacpac'无法解决,因为没有这样的来源 加载。警告SQL72025:未提供任何文件以供参考 Other.dacpac;部署可能会失败。当包创建时, 原始引用文件位于D:\ BUILDS \ 6 \ CORE SERVICES \ ACME DB (DEV2部署)\ SOURCES \ ACME.SQLDEPLOY \ DACPACS \ Other.DACPAC。
错误:添加引用时发生错误。部署不能 继续。错误计数:1。
是否有诀窍确保引用的DacPac进入包并且部署成功完成?
答案 0 :(得分:2)
最后我们不得不:
不理想,但最终我们现在有一个DacPac引用DacPacs的自动部署过程。
答案 1 :(得分: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.dacpac
相同的目录,Microsoft.SqlServer.Dac.DacServices
会找到它