Проект базы данных Visual Studio 2010 - неразрешенная ссылка на синоним - PullRequest
14 голосов
/ 04 октября 2011

У нас есть пара синонимов, которые используются для ссылки на таблицы в отдельной базе данных (это на одном сервере).

С фактическими синонимами все в порядке, но хранимые процедуры / пользовательские функции, ссылающиеся на указанные синонимы, показывают следующую ошибку:

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, есть обходной путь, который звучит для меня слишком глупо.

Ответы [ 2 ]

8 голосов
/ 09 января 2012

Это происходит потому, что в базе данных вызывающих абонентов необходимо добавить ссылку на зависимую базу данных и указать также значение для имени базы данных. Смотрите ниже:

Database reference

Затем вы можете создать свой синоним, используя следующий код:

CREATE SYNONYM [dbo].[mytable] FOR [$(MasterDatabase)].[dbo].[mytable]
0 голосов
/ 25 августа 2016

У меня та же проблема с синонимами таблиц, которые указывают на другую базу данных на том же сервере, что и основная база данных. Добавление ссылки работает практически для всего, кроме встроенных табличных функций. Как только вы попытаетесь использовать синоним

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

в такой функции ошибка возвращается. SSDT 2013 Update 4 - моя версия. Просто невероятно, что в 2016 году такая ошибка все еще у нас. Обработка синонимов должна быть простой, поскольку это основной механизм абстрагирования зависимостей. Не могу поверить, что это все еще не исправлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...