【问题标题】:Reference to system databases becomes duplicated in SSDT database projectSSDT 数据库项目中对系统数据库的引用变得重复
【发布时间】:2020-09-11 15:06:41
【问题描述】:

在一个包含大量项目和引用的大型 SSDT 数据库解决方案中,我正在将我的项目中的引用添加到系统数据库(master、msdb),它运行良好,并且构建成功。

一段时间后,我开始收到有关不正确引用的错误。我去参考部分看到这个:https://pasteboard.co/JqzDSDh.png

我尝试删除第二个引用并且错误消失了,但是这个问题又出现了,我再次看到两个相同的引用。

谢谢!

【问题讨论】:

  • 请编辑您的问题并添加嵌入图片,而不是添加链接。

标签: sql sql-server sql-server-data-tools


【解决方案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 文件、binobj 文件夹并重新构建项目。

【讨论】:

  • 谢谢!我需要在任何地方为 $(DacPacRootPath) 设置值吗?我相信修改 XML 是唯一的方法让路径里面有变量,对吧?
  • 它是内置变量,你不需要在任何地方设置它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
相关资源
最近更新 更多