2012-01-16 12 views
9

Powiedzmy mam to SQL:Jak prawidłowo uruchomić ALTER VIEW po ALTER TABLE

ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100) 

Włożyłem te oświadczenia wewnątrz pliku należy uruchomić jeden po drugim. Mam również WIDOK, który patrzy na dbo. [Tbl]. Zauważyłem, że po uruchomieniu 4 instrukcji powyżej WIDOK zachowuje stare długości kolumn. Tak I dodaje następujący kod do końca pliku:

ALTER VIEW [dbo].[tbl] 
AS 
SELECT col1, col2, col3, col4 
FROM dbo.[tbl] 

Błąd, że mogę to

'ALTER VIEW' must be the first statement in a query batch 

Więc moje pytanie jest, co jest najlepszym sposobem, aby upewnić się, że moim zdaniem zachowuje nowe długości kolumn?

Odpowiedz

17

specjalnie do tego celu użyć sp_refreshview.

exec sp_refreshview N'dbo.tbl' 
+0

Tak, to działało również, dzięki za informację! – Jason

10

Zastosowanie GO oświadczenia:

ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col2 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col3 varchar(20) 
ALTER TABLE dbo.[tbl] ALTER COLUMN col4 varchar(100) 
GO 

ALTER VIEW [dbo].[tbl] 
AS 
SELECT col1, col2, col3, col4 
FROM dbo.[tbl] 
GO 
+0

Hmm ... interesujące. Nie sądziłem, że to ważne, ale dodałem tam również instrukcje PRINT. Wygląda na to, że ALTER VIEW nie działa, jeśli przed nim są jakieś instrukcje PRINT. Ale poza tym ta praca. Dzięki Holistic Developer. – Jason

+5

Działa to tylko w systemie SSMS i powiązanych narzędziach - "GO" nie jest słowem kluczowym Transact SQL. –

+0

Dobra uwaga, @ todda.speot.is. –

Powiązane problemy