sp_refreshview (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
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.
Transact-SQL-Syntaxkonventionen
Syntax
sp_refreshview [ @viewname = ] 'viewname'
[ ; ]
Argumente
[ @viewname = ] 'viewname'
Der Name der Ansicht. @viewname ist "nvarchar" ohne Standard. @viewname kann ein mehrteiliger Bezeichner sein, kann jedoch nur auf Ansichten in der aktuellen Datenbank verweisen.
Rückgabecodewerte
0
(Erfolg) oder eine Zahl ungleich null (Fehler).
Hinweise
Wenn keine Ansicht mit SCHEMABINDING erstellt wird, sollten Sie ausgeführt werden, sp_refreshview
wenn Änderungen an den Objekten vorgenommen werden, die der Ansicht zugrunde liegen, die sich auf die Definition der Ansicht auswirken. Andernfalls kann die Ansicht unerwartete Ergebnisse erzielen, wenn sie abgefragt wird.
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 Ansicht
Im folgenden Beispiel werden die Metadaten für die Sicht Sales.vIndividualCustomer
aktualisiert.
USE AdventureWorks2022;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
B. Erstellen eines Skripts, das alle Ansichten 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 AdventureWorks2022;
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');