SSDT 数据库项目中对系统数据库的引用变得重复
Posted
技术标签:
【中文标题】SSDT 数据库项目中对系统数据库的引用变得重复【英文标题】:Reference to system databases becomes duplicated in SSDT database project 【发布时间】:2020-09-11 15:06:41 【问题描述】:在一个包含大量项目和引用的大型 SSDT 数据库解决方案中,我正在将我的项目中的引用添加到系统数据库(master、msdb),它运行良好,并且构建成功。
一段时间后,我开始收到有关不正确引用的错误。我去参考部分看到这个:https://pasteboard.co/JqzDSDh.png
我尝试删除第二个引用并且错误消失了,但是这个问题又出现了,我再次看到两个相同的引用。
谢谢!
【问题讨论】:
请编辑您的问题并添加嵌入图片,而不是添加链接。 【参考方案1】:您的project.sqlproj
文件很可能有问题。尝试在那里搜索master.dacpac
关键字并确保没有多个条目。确保 dacpac 路径没有完全硬编码,而是在那里使用 $(DacPacRootPath)
变量。
这是一个参考应该是什么样子的示例(确保您在路径中定义了正确的 SQL 版本。我的版本是 140)。
<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac">
<HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
如果这没有帮助,请尝试运行“清洁解决方案”,然后删除所有 *.jfm
文件和 *.dbmdl
文件、bin
和 obj
文件夹并重新构建项目。
【讨论】:
谢谢!我需要在任何地方为 $(DacPacRootPath) 设置值吗?我相信修改 XML 是唯一的方法让路径里面有变量,对吧? 它是内置变量,你不需要在任何地方设置它以上是关于SSDT 数据库项目中对系统数据库的引用变得重复的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft SSDT (10.3.21208.0)/数据层项目 (MSVS 2010) 和项目与引用数据库项目之间的“共享”/复制证书
dotConnect for Oracle v9.1发布,新增SSDT-BI项目模板
修复或避免在 SSDT 引用 Azure 托管实例中的主数据库时出现 SQL71501 和 SQL71561 构建错误?