我不能在我的项目中使用synomyms因为一些部署限制所以相反,我创造了这个观点:无效对象名
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]
事实上,doesn't提供智能感知我该表的列。
表[PersonalData].[dbo].[Titles]
在那里。事实上,下面的查询返回结果没有任何错误:
select * from [PersonalData].[dbo].[Titles]
我对SQL知识是不够深,但我不明白这是为什么,为什么它发现Users
表,但doesn't找到Titles
。
多一点背景:
- ,我创建视图是不是在
PersonalData
数据库,但在所谓的Platform
其他数据库。 - 我检查了上下文,它是好的,我在
Platform
数据库中创建视图。
为什么会发生?
你不能使用'SELECT u。[Id] AS [id]'?看起来创建视图就是找到你的'Titles'表格就好了 – 2013-03-05 19:15:36
@MattBusche如果你添加一些细节,我认为你应该把它作为这个问题的答案。 – 2013-03-05 19:16:51
@MattBusche:这是答案(我的耻辱)。请回答,我会接受它。谢谢 – lontivero 2013-03-05 19:18:50