SQL71501 - 如何摆脱这个错误?

时间:2015-02-27 07:36:23

标签: sql sql-server visual-studio-2013

我们在项目中使用了两个架构(dbo + kal)。

当我们尝试使用以下SQL语句创建视图时,Visual Studio会在错误列表中显示为错误。

CREATE VIEW [dbo].[RechenketteFuerAbkommenOderLieferantenView]
AS
    SELECT
        r.Id as RechenkettenId,
        r.AbkommenId,
        r.LieferantId,
        rTerm.GueltigVon,
        rTerm.GueltigBis,
        rs.Bezeichnung,
        rs.As400Name
    FROM
        [kal].[Rechenkette] r
    JOIN
        [kal].[RechenketteTerm] rTerm ON rTerm.RechenketteId = r.Id
    JOIN
        [kal].[Basisrechenkette] br ON rTerm.BasisrechenketteId = br.Id
    JOIN
        [kal].[Rechenkettenschema] rs ON rs.Id = br.Id
    WHERE 
        r.RechenkettenTyp = 0

错误消息如下所示:

  

SQL71501:计算列:[dbo]。[RechenketteFuerAbkommenOderLieferantenView]。[AbkommenId]包含对象的未解析引用。对象不存在或引用不明确,因为它可以引用以下任何对象:
  [kal]。[Basisrechenkette]。[r] :: [AbkommenId],[kal]。[Rechenkette]。[AbkommenId],[kal]。[Rechenkette]。[r] :: [AbkommenId],[kal]。 [Rechenkettenschema]。[r] :: [AbkommenId]或[kal]。[RechenketteTerm]。[r] :: [AbkommenId]。

发布视图并正常工作很好,但是在构建我们的项目时始终看到错误消息非常烦人,因为所有严重错误都会在这些sql错误的混乱中丢失。

你有什么想法,问题可能是什么?

8 个答案:

答案 0 :(得分:3)

我刚刚找到了解决方案。虽然我无法读取您的(似乎是德语)足以知道您是否引用了系统视图,但如果是这样,则必须提供对master的数据库引用。否则,添加任何其他必需的数据库引用应该可以解决问题。

此处对系统视图进行了描述:Resolve reference to object information schema tables

for other database references

此处提供了更多信息:Resolving ambiguous references in SSDT project for SQL Server

答案 1 :(得分:2)

我们有一个项目,其中包含一个引用另一个数据库中的表值函数的视图。添加解析远程数据库使用的字段所需的数据库引用后,我们仍然收到此错误。我发现表值函数是使用“SELECT * FROM ...”定义的,这是由不熟悉良好编码实践的人创建的旧代码。我用所需的枚举字段替换了“*”部分并编译了该函数,然后为该数据库重新创建了dacpac以捕获结果模式,并将新的dacpac合并为数据库引用。呜呜!模棱两可的参考文献消失了!似乎SSDT引擎不能(或不能)总是能够进入所引用的dacpac的内部,以便返回所有字段。当然,我工作的项目通常非常大,所以我认为在要求他们验证代码时,给工具提供所有帮助是有意义的。

答案 2 :(得分:1)

我知道这是一个老问题,但它是第一个在搜索错误时弹出的问题。

在我的情况下,错误阻止我在Visual Studio 2017中执行SqlSchemaCompare。但是错误是表格的表/索引不再是解决方案的一部分。简单的清理/重建没有帮助。

重新加载视觉工作室解决方案就可以了。

答案 3 :(得分:1)

尽管这是一个老话题,但它在搜索引擎中的排名很高,因此我将分享对我有用的解决方案。

我在Visual Studio 2017 SQL Server项目的脚本文件中的CREATE TYPE语句中遇到了相同的错误代码,因为我找不到如何从界面。

解决方案是,在Visual Studio中,除了通过右键单击> Add 可以看到的文件类型以外,还有许多可编程文件类型。只需选择新元素,然后在搜索字段中找到您要创建的元素即可。

答案 4 :(得分:1)

对我来说,我在用户定义的表类型上看到了SQL71501。原来,我的解决方案中表类型的sql文件未设置为build。我将构建操作从“无”更改为“构建”后,该错误消失了。

答案 5 :(得分:0)

就我而言,尝试导出数据层应用程序时遇到此错误。该错误与数据库用户上的链接有关。要解决此问题,您需要以具有系统用户读取权限的身份登录服务器。

答案 6 :(得分:0)

就我而言,当我双击该文件并打开它时,我发现对ColumnX的引用之一没有使用两部分名称,因此SSDT无法确定它属于哪个表,而且该列是否存在于表中。一旦我添加了两个部分的名称。答对了!我没有错误!

答案 7 :(得分:0)

在我的情况下,我只需双击错误,它就会带我到过程中的确切错误,我注意到表列被删除或重命名,但在 SP 中它仍然使用旧列名。