Alle Sichten in einer Microsoft-SQL-Server-Datenbank aktualisieren

Um alle Views in einem Rutsch zu aktualisieren, hilft folgender Code:

DECLARE @view AS VARCHAR(255);

DECLARE views_cursor CURSOR FOR 
    SELECT TABLE_SCHEMA + '.' +TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_TYPE = 'VIEW' 
    AND OBJECTPROPERTY(OBJECT_ID(TABLE_NAME), 'IsMsShipped') = 0 
    ORDER BY TABLE_SCHEMA,TABLE_NAME 

OPEN views_cursor 

FETCH NEXT FROM views_cursor 
INTO @view 

WHILE (@@FETCH_STATUS <> -1) 
BEGIN
    BEGIN TRY
        EXEC sp_refreshview @view;
        PRINT @view;
    END TRY
    BEGIN CATCH
        PRINT 'Error during refreshing view "' + @view + '".';
    END CATCH;

    FETCH NEXT FROM views_cursor 
    INTO @view 
END 

CLOSE views_cursor; 
DEALLOCATE views_cursor;

Funktioniert wunderbar.

In der Praxis z. B. hilfreich, wenn in den zugrunde liegenden Tabellen Spalten hinzugekommen sind oder entfernt wurden.