Freigeben über


sp_refreshview (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

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 = ] 'Ansichtsname'

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 eine Ansicht nicht mit SCHEMABINDINGerstellt wird, sp_refreshview sollte ausgeführt werden, wenn Änderungen an den Objekten vorgenommen werden, die der Ansicht zugrunde liegen, was die Definition der Ansicht beeinflusst. Andernfalls könnte die Ansicht unerwartete Ergebnisse liefern, wenn Sie sie abfragen.

Berechtigungen

Erfordert ALTER Berechtigungen für die Ansicht sowie REFERENCES für benutzerdefinierte Typen und XML-Schema-Sammlungen, auf die die Ansichtsspalten verweisen.

Beispiele

Die Codebeispiele in diesem Artikel verwenden die AdventureWorks2025- oder AdventureWorksDW2025 Beispieldatenbank, die Sie von der Microsoft SQL Server Samples and Community Projects Homepage herunterladen können.

Ein. Aktualisieren der Metadaten einer Ansicht

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

USE AdventureWorks2025;
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 AdventureWorks2025;
GO

SELECT DISTINCT 'EXECUTE 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');