【问题标题】:Error SQL0: The reference to external elements from the source named 'MyDatabase.dacpac' could not be resolved, because no such source is loaded错误 SQL0:无法解析对来自名为“MyDatabase.dacpac”的源的外部元素的引用,因为没有加载此类源
【发布时间】:2017-12-15 17:27:01
【问题描述】:
我在使用 sqlpackage.exe 或 DacFx DLL 以编程方式发布由不同团队编译和提供的 dacpac (A) 时遇到此错误,而该团队又依赖于另一个 dacpac (B)。
我可以确认:
- 从 A 对 B 的引用将“禁止引用警告”设置为 True
- B .dacpac 文件与 A .dacpac 文件位于同一文件夹中
- 我已尝试使用 2 个不同版本的 Microsoft.SqlServer.Dac.dll,12.0.2882.1 和 14.0.3881.1
- 两个 dacpac 都设置为面向 SQL Server 2012,我正在尝试发布到 SQL Server 2012
- 我已尝试将
IncludeCompositeObjects 部署选项设置为 true 和 false
我做错了什么?如何发布已编译并提供给我的 dacpac,其中包含一个对我无效的路径引用的数据库引用?
【问题讨论】:
标签:
sql-server
dac
sqlpackage
【解决方案1】:
当您在 Visual Studio 的版本之间切换时,可能会发生这种情况。在我的场景中,我最初使用 VS2017 专业版构建了一个数据库项目。当我切换到 VS2017 企业版时,我在构建时收到了一堆 The reference to external elements from the source named 'master.dacpac' could not be resolved, because no such source is loaded. 错误(这也发生在先构建企业版,然后切换到专业版时)。
我解决了这个问题:
- 关闭 Visual Studio;
- 删除项目根文件夹中的
*.dbmdl、*.jfm和*.user文件;
- 重新打开 Visual Studio 并重新构建。