2013-06-29 5 views
3
Error 431 SQL71561: 
Computed Column: [dbo].[ViewAlertFrequency].[BeginDate] 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: 
[Lookup].[dbo].[AlertFrequency].[AlertFrequency]::[BeginDate] 
or [Lookup].[dbo].[AlertFrequency].[BeginDate] 

Текущая база данных - это поиск, поэтому не должно быть никаких проблем с поиском этого объекта. Это импортируется из существующего представления. Похоже, что вся база данных такая. Я не уверен, что такое синтаксис ::.Ошибка SQL71561 - неоднозначная ссылка

Вот вид:

CREATE VIEW [dbo].[ViewAlertFrequency] 

AS 

--### 
--ViewAlertFrequency 
--### 

--### 
--used by: eobResolve 
--### 

SELECT DISTINCT TOP 100 
    AlertFrequency.[ID]  AS [ID], 
    AlertFrequency.Code  AS Code, 
    AlertFrequency.[Name]  AS [Name], 
    AlertFrequency.[Description] AS [Description], 
    AlertFrequency.[Rank]  AS [Rank], 
    AlertFrequency.BeginDate AS BeginDate, 
    AlertFrequency.EndDate  AS EndDate 

FROM   
    Lookup.dbo.AlertFrequency AS AlertFrequency 

ORDER BY 
    AlertFrequency.[Rank]  ASC 


GO 
GRANT SELECT 
    ON OBJECT::[dbo].[ViewAlertFrequency] TO [eobResolve] 
    AS [dbo]; 
+1

Вы видели [это] (http://blogs.msdn.com/b/bahill/archive/2009/08/26/using-self-referencing-or-local-3-part-names.aspx) ? –

+0

@ IswantoSan Я пытался использовать $ (DatabaseName), но он все еще не работал. Я просто изменил имя из 3-х частей на 2. –

+0

Возможный дубликат [проекта базы данных VS 2012 года] неразрешенная ссылка на объект «Ошибка» (http://stackoverflow.com/questions/13373310/vs-2012-database-project-unresolved -reference-to-object-error) –

ответ

7

Вы используете 3-часть соглашения об именах в "FROM" п. Измените «Lookup.dbo.AlertFrequency» на «dbo.AlertFrequency», и ваша проблема должна исчезнуть. У меня были смешанные результаты. Изменение одного из параметров БД, казалось, было достаточным для разрешения этих имен из трех частей, но затем я столкнулся с другими проблемами, связанными с перекрестными ссылками (имена из 4-х частей). Я решил изменить имена трех частей на 2 части [схема]. Именование [object] было бы более простым способом справиться с этим.

Оператор GRANT просто указывает, что разрешение предоставляется объекту, а не схеме. Я не думаю, что это относится к определению объекта, но мы обрабатываем наши разрешения в сценариях после развертывания, потому что они немного отличаются от одной среды к другой.

+0

Не могли бы вы объяснить, как это изменить в параметрах БД? –

+0

Не знаете, что вы пытаетесь изменить с помощью параметров БД. Если вы хотите игнорировать это предупреждение, вы можете изменить свойства проекта, чтобы игнорировать числовую часть предупреждения (71561), и если вы пытаетесь игнорировать несколько, вы можете ввести их как список CSV. –