【问题标题】:Visual Studio 2010 Database Project - Unresolved Reference to a SynonymVisual Studio 2010 数据库项目 - 未解决的同义词引用
【发布时间】:2011-11-30 08:51:05
【问题描述】:

我们有几个同义词用于引用单独数据库(位于同一服务器上)中的表。

实际的同义词很好,但是引用所述同义词的存储过程/用户定义的函数显示以下错误:

Error   13  SQL03006: Column: [dbo].[GetCocosIndexSearched].[User ID] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [dbo].[AuditType].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[e]::[LOGIN_ID], [dbo].[EMPLOYEES].[LOGIN_ID] or [dbo].[SearchCIBirthsRequest].[e]::[LOGIN_ID].    C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Programmability\Functions\GetCocosIndexSearched_1.function.sql  21  5   RBDM.Audit.Database

[dbo].[GetCocosIndexSearched] 是一个函数,[dbo].[EMPLOYEES] 是同义词。

这些在实际数据库本身中都可以正常工作 - 问题仅在于数据库项目。我尝试添加对单独数据库的引用(通过新的数据库项目或数据库项目模式),但随后出现了同义词和引用表的冲突问题:

Error   7   SQL04105: The model already has an element that has the same name dbo.EMPLOYEES.    C:\VSTS\Corporate\WARS Audit\MAIN\Source\RBDM.Audit.Database\Schema Objects\Schemas\dbo\Synonyms\EMPLOYEES.synonym.sql  2   1   RBDM.Audit.Database

有什么想法吗?在另一个 stackoverflow 帖子中提到了一种解决方法,它谈到将创建脚本放在 Script.PostDeployment.sql 中 - 对我来说听起来有点太 hacky。

【问题讨论】:

    标签: visual-studio-2010 database-project


    【解决方案1】:

    发生这种情况是因为在调用方数据库中,您必须添加对依赖数据库的引用并同时指定数据库名称的值。 往下看:

    然后您可以使用以下代码创建同义词:

    CREATE SYNONYM [dbo].[mytable] FOR [$(MasterDatabase)].[dbo].[mytable]
    

    【讨论】:

    • 如何显示“添加数据库引用”窗口?从哪个菜单?
    • 我也很难找到它。您必须右键单击数据库项目下的“参考”。那里有“添加数据库引用”。
    【解决方案2】:

    我对指向与主数据库相同的服务器上的另一个数据库的表同义词有同样的问题。添加参考适用于几乎所有内容,但内联表值函数除外。一旦你尝试使用同义词

    create synonym syn.Table for [$(MyDb)].[dbo].[Table];
    

    在这样的函数中,错误又回来了。 SSDT 2013 Update 4 是我的版本。令人难以置信的是,在 2016 年,这样的错误仍然伴随着我们。处理同义词应该是无缝的,因为这是抽象依赖关系的主要机制。不敢相信它仍然没有被纠正。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多