【发布时间】:2014-11-01 05:31:03
【问题描述】:
我在 Visual Studio 2013 中创建了一个 SQL Server 数据库项目,并导入了一个从生产数据库中获取的 DACPAC。当我尝试构建项目时,我收到数百个 SQL71501 和 SQL71561 错误(这两个都是“未解决的对象引用”)。检查脚本的问题是,许多视图和存储过程使用三个部分名称:[数据库].[模式].[对象]。
似乎 Visual Studio 2013 遇到包含由数据库项目表示的数据库的三部分名称时会引发此错误。例如,如果数据库项目代表数据库“MyDatabase”并且该项目中的 SQL 脚本包含类似 SELECT t.Column1 FROM MyDatabase.dbo.MyTable t 的内容,那么当我构建项目时 VS 2013 会抛出 SQL71501 或 SQL71561。
有什么方法可以抑制仅适用于当前数据库的未解决的引用错误?我仍然希望 Visual Studio 为未解决的外部数据库引用抛出错误。
编辑,更正:原来说的错误代码是SQL71501。但是,对于对同一数据库的未解决引用,Visual Studio 似乎同时引发了 SQL71501 和 SQL71561 错误。
【问题讨论】:
-
我也想知道这个。我发现了一些似乎可行的方法,但随后出现了各种构建错误。我取得的唯一成功是从同一数据库的所有过程、视图和函数中删除了 3 部分命名。如果您限制为 *.sql 类型的文件并包含架构名称,则相对容易找到,但似乎应该有更好的方法。
-
@PeterSchott:我发现以前的 Stackoverflow 帖子似乎确认删除 3 个部分名称是唯一的解决方案:stackoverflow.com/questions/19153996/…。该问题包括一个指向旧 MSDN 博客的链接,该博客似乎确认我们不能在 SSDT 数据库项目中使用 3 部分名称,唯一的解决方法是在出现的任何地方删除数据库名称。 (我还注意到答案中的链接指向我认为是您的博客!)该 MSDN 博客文章已有 5 年历史,我很失望他们没有在后续版本中解决此问题。
-
好吧,就像我说的,我取得了部分的成功。它看起来很棒,直到我构建并发现很多其他东西现在都在抛出错误。我同意这令人失望。
-
多么水力压裂的位置。为什么 MSFT 不能做到这一点?
-
我刚遇到这个问题。 OP 已经超过六年了,这仍然是一个问题。什么是提出这个问题的合适场所,并且(可能)由 MS 解决?
标签: visual-studio-2013 sql-server-data-tools database-project