未解决的相同数据库项目的引用

Sim*_*wsi 13 database-project visual-studio-2013 sql-server-data-tools

我在Visual Studio 2013中创建了一个SQL Server数据库项目,并导入了从生产数据库中获取的DACPAC.当我尝试构建项目时,我得到了数百个SQL71501和SQL71561错误(这两个错误都是"未解析的对象引用").检查脚本问题是许多视图和存储过程使用三个部分名称:[database].[schema].[object].

每当遇到包含数据库项目所代表的数据库的三部分名称时,Visual Studio 2013似乎都会抛出此错误.例如,如果数据库项目代表数据库"MyDatabase",并且该项目中的SQL脚本包含类似的内容,SELECT t.Column1 FROM MyDatabase.dbo.MyTable t那么VS 2013将在构建项目时抛出SQL71501或SQL71561.

有没有办法抑制刚刚应用于当前数据库的未解决的引用错误?我仍然希望Visual Studio为未解析的外部数据库引用抛出错误.

编辑,更正:最初声明错误代码是SQL71501.但是,Visual Studio似乎会针对同一数据库的未解析引用抛出SQL71501和SQL71561错误.

sca*_*r80 8

实际上有两种解决方法.我个人认为SSDT中存在一个关于当前数据库中三部分对象名称的错误.

  1. 创建项目快照(dacpac)并将其作为数据库引用引用.请记住在"添加数据库引用"对话框中清除数据库变量字段.
    它可以工作,但Microsoft不推荐这种方法,并可能导致其他问题:https: //connect.microsoft.com/SQLServer/feedbackdetail/view/1047094/post-deployment-script-is-not-generated-in-the-发布脚本

  2. 在你的代码中用[$(DatabaseName)]替换所有出现的MyDatabase.dbo.MyTable .dbo.MyTable
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1863d960-d32d-4920-9a30 -13dc86c6f857/sql71562悬而未决引用到followd对象按数据库名称中最相同的项目?论坛= SSDT和教授为必填

  • 三年后,我处理这个问题的方式发生了变化。现在我将在 SSDT 项目上进行查找和替换,替换“MyDatabase”。(注意尾随“.”)和“”(空字符串)。当我在非常大的 SSDT 项目上执行此操作时,只花了 15 分钟,就实现了两件事:1)SSDT 项目构建时没有错误,允许我执行模式比较和其他操作;2) 各个脚本不再嵌入`[$(DatabaseName)]`变量,这会阻止它们作为独立的SQL脚本运行(在开发环境中偶尔有用)。 (3认同)