當我編寫以下ALTER VIEW語句時,我在SQL Server中收到此錯誤消息。 ALTER VIEW線以紅色下劃線。ALTER VIEW必須是批處理中的唯一語句
IF EXISTS(SELECT * FROM sys.views WHERE name = 'SigHierarchyView')
ALTER VIEW [dbo].[SigHierarchyView] WITH SCHEMABINDING AS
(
SELECT [Sig].[Id]
,[Sig].[UniqueId]
,[Sig].[TenantId] AS [ParentTenantId]
,[Sig].[Code_FR]
,[Sig].[Code_EN]
,[Sig].[DecodedText_FR]
,[Sig].[DecodedText_EN]
,[Sig].[DecodedText_ES]
,[Sig].[DecodedText_IT]
,[Sig].[DecodedText_VI]
,[Sig].[DecodedText_CH]
,[Sig].[Timestamp]
,[Sig].[Deleted]
,[Sig].[CreationDate]
,[Sig].[CreationUserUniqueId]
,[Sig].[ModificationDate]
,[Sig].[ModificationUserUniqueId]
,TenantHierarchy.[LeafTenantId] AS [TenantId]
FROM dbo.[Sig]
INNER JOIN dbo.TenantHierarchy ON [Sig].TenantId = TenantHierarchy.ParentTenantId
WHERE TenantHierarchy.Level = (
SELECT MIN(TenantHierachieIn.Level)
FROM dbo.TenantHierarchy TenantHierachieIn
INNER JOIN dbo.[Sig] as SigIn
ON SigIn.TenantId = TenantHierachieIn.ParentTenantId
AND SigIn.UniqueId = [Sig].UniqueId
WHERE TenantHierachieIn.[LeafTenantId] = TenantHierarchy.[LeafTenantId]
)
)
GO
我試圖把一個BEGIN和END但這並沒有幫助。我正在使用SQL Server 2012.
那麼,如果我們總是需要重新創建它來修改它,那麼擁有ALTER VIEW語句的目的是什麼?我更喜歡不重新創建它,因爲這是許多開發人員的大型應用程序的一部分,如果我這樣做,這個視圖的安全方面也必須重新創建。 – Ray 2014-12-01 16:09:10
你並不總是需要重新創建它。你不需要先放下視圖。 ALTER VIEW將覆蓋現有的視圖定義。我只是認爲你想這樣做是出於某種原因。我更新了我的答案以反映這一點。 – 2014-12-01 16:10:26
您使用dacpac部署嗎? – ChrisBint 2014-12-01 16:16:17