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

时间:2018-03-07 22:13:35

标签: sql-server visual-studio database-project

我有一个非常大的数据库(几百个表),我在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)?我是否必须明确地将My procs和函数引用的所有表添加到我的数据库项目中?

1 个答案:

答案 0 :(得分:0)

很难完全理解你的问题,但可能有几种情况:

  1. 如果你有一个数据库项目(MyDbName),并且那里存在表和UDF,那么你不应该使用完全限定名,因为你引用它本身就没有意义了。可能存在这样的情况:您有多个相同结构数据库的实例,另一个作为主服务器作为从服务器,但据我所知,情况并非如此,因此只需在语句中不使用数据库名称。

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

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

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