デプロイメントの制限により、プロジェクトで同義語を使用できないため、代わりに次のビューを作成しました。
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
table は見つかるのに が見つからないのか理解できませんTitles
。
もう少しコンテキスト:
- 私が作成しているビューは、データベースではなく、 という
PersonalData
別のデータベースにありますPlatform
。 - コンテキストを確認しましたが、問題ありません
Platform
。データベースにビューを作成しています。
なぜそれが起こるのですか?