对数据库项目使用完全限定的表名,未解决的引用错误

Posted

技术标签:

【中文标题】对数据库项目使用完全限定的表名,未解决的引用错误【英文标题】:Use fully qualified table names for Database Projects, Unresolved reference error 【发布时间】:2018-03-07 22:13:34 【问题描述】:

我有一个现有的非常大的数据库(数百个表),我正在使用 VS 2017 中的数据库项目。考虑像这样简单的 UDF

create function [MySchema].fn_Name --MySchema is located in MyDbName
(
   @num int
)
returns table
as return
select @num
inner join [MyDbName].dbo.MyTable mt
on mt.num = @num

我有一个 MyDbName 的数据库项目和几个与这个特定项目相关的表,但这些表不包括 MyTable。如果我想使用完全限定名称,如何防止 MyTable 出现歧义引用错误 (SQL71561)?我是否必须将我的过程和函数引用的所有表显式添加到我的数据库项目中?

【问题讨论】:

【参考方案1】:

很难准确理解您的问题,但可能有几种情况:

    1234563可能存在这样一种情况,您有多个相同结构数据库的实例,一个作为主数据库,另一个作为从属数据库,但据我了解,情况并非如此,因此请不要在语句中使用数据库名称。

    如果 dbo.MyTable 存在于与 UDF 不同的数据库项目中,则需要添加数据库引用并使用变量来定义数据库。 Read more。通过引用其他数据库项目的.dacpac 添加数据库引用。然后您的查询将如下所示:

inner join [$(MyDbName)].dbo.MyTable mt

回答您的问题:不,您不必自己添加表格,但您需要添加对包含这些表格的项目的引用。

【讨论】:

以上是关于对数据库项目使用完全限定的表名,未解决的引用错误的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2013 视图对对象有未解析的引用

WebStorm 中未解析的表名

Hibernate中的ManyToMany映射引用错误(由api生成的表名)表Spring Boot

表是现成的。 PyCharm 中未解析的表引用

MySQL 列引用不同的表名

安卓TextView限定行数最大值,点击按钮显示所有内容