webForumDet fria alternativet

Uppdatera alla vyer i en databas

Databaser & SQLur Databashanterare & SQL

1 svar · 461 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
Frågan#1

Hej!

Jag har en massa vyer (MSSQL2000) som är gjorda genom att ta 'SELECT * FROM' detta innebär att när man lägger till en ny kolumn i en tabell, så slutar vyerna att fungera. Går man däremot in på varje vy (redigeringsläge) och stänger så uppdateras den korrekt.

Lite jobbigt att göra på alla vyer då de är så många.
Jag har hört talas om att det finns nån system-procedur som man kan nyttja för att uppdatera alla vyer i en databas.

Finns det någon vänlig människa som vet hur man kan göra detta?

Red. Tydligen så heter proceduren: sp_refreshview [vynamn].
Men hur gör man om man vill uppdatera ALLA vyer i en speciell databas?

ironheadMedlem sedan mars 20011 346 inlägg
#2

Tror jag fick kläm på det själv :)

USE [databas]; 
GO 
 
SET NOCOUNT ON;

DECLARE @View sysname, @Error int

DECLARE UpdateView CURSOR FOR
select table_name from INFORMATION_SCHEMA.tables where table_type = 'VIEW'

OPEN UpdateView

FETCH NEXT FROM UpdateView
INTO @View

WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_refreshview @View
PRINT @View+' uppdaterades'

SET @Error = @@ERROR
IF @Error <>0
BEGIN
PRINT '- error'
END

FETCH NEXT FROM UpdateView
INTO @View 
END

CLOSE UpdateView
DEALLOCATE UpdateView
142 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)