【问题标题】: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)?我是否必须将我的过程和函数引用的所有表显式添加到我的数据库项目中?

【问题讨论】:

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


    【解决方案1】:

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

      1234563可能存在这样一种情况,您有多个相同结构数据库的实例,一个作为主数据库,另一个作为从属数据库,但据我了解,情况并非如此,因此请不要在语句中使用数据库名称。
    1. 如果 dbo.MyTable 存在于与 UDF 不同的数据库项目中,则需要添加数据库引用并使用变量来定义数据库。 Read more。通过引用其他数据库项目的.dacpac 添加数据库引用。然后您的查询将如下所示:

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

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

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 2014-11-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2011-05-11
      • 2021-02-02
      • 2016-02-12
      • 2011-11-30
      相关资源
      最近更新 更多