Freigeben über


sp_refreshview (Transact-SQL)

Aktualisiert die Metadaten für die angegebene nicht schemagebundene Sicht. Permanente Metadaten für eine Sicht sind möglicherweise aufgrund von Änderungen an den zugrunde liegenden Objekten, von denen die Sicht abhängt, nicht mehr aktuell.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_refreshview [ @viewname = ] 'viewname' 

Argumente

  • [ @viewname= ] 'viewname'
    Der Name der Sicht. viewname ist vom Datentyp nvarchar und weist keinen Standardwert auf. viewname kann ein mehrteiliger Bezeichner sein, der aber nur auf Sichten in der aktuellen Datenbank verweisen kann.

Rückgabecodewerte

0 (Erfolg) oder eine Zahl ungleich Null (Fehler)

Hinweise

Wenn eine Sicht nicht mit Schemabindung erstellt wurde, sollte sp_refreshview ausgeführt werden, nachdem Änderungen an den der Sicht zugrunde liegenden Objekten vorgenommen wurden, die die Definition der Sicht betreffen. Andernfalls liefert die Abfrage der Sicht möglicherweise unerwartete Ergebnisse.

Berechtigungen

Erfordert die ALTER-Berechtigung für die Sicht und die REFERENCES-Berechtigung für CLR-benutzerdefinierte (Common Language Runtime) Typen und XML-Schemaauflistungen, auf die durch die Sichtspalten verwiesen wird.

Beispiele

A. Aktualisieren der Metadaten einer Sicht

Im folgenden Beispiel werden die Metadaten für die Sicht Sales.vIndividualCustomer aktualisiert.

USE AdventureWorks2008R2;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Erstellen eines Skripts, das alle Sichten aktualisiert, die Abhängigkeiten von einem geänderten Objekt aufweisen

Angenommen, die Person.Person-Tabelle wurde auf eine Weise geändert, die sich auf die Definition von Sichten auswirkt, die für die Tabelle erstellt wurden. Im folgenden Beispiel wird ein Skript erstellt, das die Metadaten aller Sichten aktualisiert, die eine Abhängigkeit von der Person.Person-Tabelle aufweisen.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' 
FROM sys.objects AS so 
INNER JOIN sys.sql_expression_dependencies AS sed 
    ON so.object_id = sed.referencing_id 
WHERE so.type = 'V' AND sed.referenced_id = OBJECT_ID('Person.Person');