Freigeben über


sp_refreshview (Transact-SQL)

Aktualisiert die Metadaten für die angegebene nicht schemagebundene Sicht. Persistente 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.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_refreshview [ @viewname = ] 'viewname'

Argumente

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

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 AdventureWorks2012;
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 AdventureWorks2012;
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');

Siehe auch

Verweis

Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)

Gespeicherte Systemprozeduren (Transact-SQL)

sys.sql_expression_dependencies (Transact-SQL)

sp_refreshsqlmodule (Transact-SQL)