SQL71501 - 如何摆脱这个错误?

Jan*_*nik 10 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
Run Code Online (Sandbox Code Playgroud)

错误消息如下所示:

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

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

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

JLW*_*low 7

对我来说,我在用户定义的表类型上看到了 SQL71501。事实证明,我的解决方案中表类型的sql文件没有设置为build。一旦我将构建操作从“无”更改为“构建”,错误就消失了。


dev*_*ost 6

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

此处针对系统视图进行了描述:解析对对象信息架构表的引用

以及其他数据库参考

此处提供了其他信息:解决 SQL Server SSDT 项目中的歧义引用

  • 感谢您的迟到答复。我搬到了另一家公司,不幸的是我不能再测试了。 (2认同)

小智 5

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


Flo*_*anB 5

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

在我的情况下,错误阻止我在 Visual Studio 2017 中执行 SqlSchemaCompare。然而,错误是针对不再属于解决方案的表的表/索引。简单的清理/重建没有帮助。

一个Visual Studio解决方案的重载的伎俩。