visual-studio-2013 - 对同一数据库项目的未解决引用

标签 visual-studio-2013 sql-server-data-tools database-project

我在 Visual Studio 2013 中创建了一个 SQL Server 数据库项目,并导入了一个从生产数据库中获取的 DACPAC。当我尝试构建项目时,我收到数百个 SQL71501 和 SQL71561 错误(这两个都是“ Unresolved 对象引用”)。检查脚本,问题在于许多 View 和存储过程使用三个部分名称:[数据库].[模式].[对象]。

似乎 Visual Studio 2013 遇到包含由数据库项目表示的数据库的三部分名称时会引发此错误。例如,如果数据库项目代表数据库“MyDatabase”并且该项目中的 SQL 脚本包含类似 SELECT t.Column1 FROM MyDatabase.dbo.MyTable t 的内容。然后 VS 2013 在我构建项目时抛出 SQL71501 或 SQL71561。

有什么方法可以抑制仅适用于当前数据库的 Unresolved reference 错误?我仍然希望 Visual Studio 为 Unresolved external 数据库引用引发错误。

编辑,更正:最初声明错误代码是SQL71501。但是,对于 Unresolved 对同一数据库的引用,Visual Studio 似乎同时引发了 SQL71501 和 SQL71561 错误。

最佳答案

那么实际上有两种解决方法。我个人的看法是,SSDT 中存在与当前数据库中的 3 部分对象名称有关的错误。

  • 创建您的项目快照 (dacpac) 并将其作为数据库引用进行引用。请记住在“添加数据库引用”对话框中清除数据库变量字段。
    它可以工作,但是 Microsoft 不推荐这种方法,并且可能会导致其他问题:
    https://connect.microsoft.com/SQLServer/feedbackdetail/view/1047094/post-deployment-script-is-not-generated-in-the-publish-script
  • 在您的代码中,将所有出现的 MyDatabase.dbo.MyTable 替换为 [$(数据库名称)] .dbo.MyTable
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1863d960-d32d-4920-9a30-13dc86c6f857/sql71562-unresolved-reference-to-object-followd-by-database-name-in-the-same-project?forum=ssdt&prof=required
  • 关于visual-studio-2013 - 对同一数据库项目的未解决引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716756/

    相关文章:

    visual-studio - "Class emulation may be converted to class"提示在 Visual Studio 中意味着什么,它来自哪里?

    c# - 如何在多个不相关的解决方案中使用(和编辑)一个项目?

    sql-server - RedGate SQL 工具 v Microsoft Visual Studio Team System 数据库版(Data Dude)

    c# - SQL Server 数据库单元测试和持续集成

    SQL72015 同时在具有数据的现有表中添加唯一 id 列

    powershell - 无法安装 nuget 包,因为 "Failed to initialize the PowerShell host"

    visual-studio - Visual Studio 警报工作区已存在

    sql-server - 从高级编辑器更改数据类型与数据转换

    visual-studio - 模式比较和更新注释掉未使用的代码

    visual-studio-2010 - 在部署后将已知值插入 VS 2010 数据库项目的正确方法是什么?