Я не могу использовать synomyms в моем проекте из-за некоторых ограничений развертывания так вместо этого, я создал эту точку зрения:Недопустимое имя объекта с точки зрения SQL
CREATE VIEW [dbo].[User] AS SELECT * FROM [PersonalData].[dbo].[User]
GO
Он работал хорошо, но теперь мне нужно изменить его следующим образом:
ALTER VIEW [dbo].[User] AS
SELECT [Id],
t.[Name] AS [Title],
[FirstName],
[LastName],
[JobTitle],
[Department],
[EmailAddress],
[PhoneNumber],
[PhoneExtension],
[MobilePhoneNumber],
[CreatedDate],
[ModifiedDate],
[Uid],
[Active]
FROM [PersonalData].[dbo].[User] AS u
LEFT OUTER JOIN [PersonalData].[dbo].[Titles] AS t ON u.TitleId = t.Id
GO
в настоящее время он терпит неудачу с:
Ambiguous column name 'Id'
в LEFT OUTER JOIN
линии.
Однако Microsoft SQL Management Studio выделяет [PersonalData].[dbo].[Titles]
с ошибкой:
Invalid object name '[PersonalData].[dbo].[Titles]
На самом деле, это не распространяется предоставить мне IntelliSense для столбцов этой таблицы.
Таблица [PersonalData].[dbo].[Titles]
есть. На самом деле, следующие результаты запрос возвращает без ошибок:
select * from [PersonalData].[dbo].[Titles]
Мои знания о SQL не достаточно глубоко, но я не понимаю, почему это, почему он находит Users
таблицу, но это не распространяется найти Titles
.
Побольше контекст:
- мнение, что я создаю не в базе данных
PersonalData
, но в другой базе данных под названиемPlatform
. - Я проверил контекст, и все в порядке, я создаю представление в базе данных
Platform
.
Почему это происходит?
Вы не можете использовать 'SELECT u. [Id] AS [id]'? Похоже, что создание представления наводит вашу таблицу 'Titles' просто отлично –
@MattBusche. Если вы добавите немного подробностей, я думаю, вы должны опубликовать это как ответ на этот вопрос. –
@MattBusche: это ответ (позор меня). Ответьте, я соглашусь. Спасибо – lontivero