Delen via


sp_refreshview (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Hiermee worden de metagegevens bijgewerkt voor de opgegeven niet-schemagebonden weergave. Permanente metagegevens voor een weergave kunnen verouderd raken vanwege wijzigingen in de onderliggende objecten waarvan de weergave afhankelijk is.

Transact-SQL syntaxis-conventies

Syntaxis

sp_refreshview [ @viewname = ] 'viewname'
[ ; ]

Argumenten

[ @viewname = ] 'viewname'

De naam van de weergave. @viewname is nvarchar, zonder standaardinstelling. @viewname kan een id met meerdere onderdelen zijn, maar kan alleen verwijzen naar weergaven in de huidige database.

Codewaarden retourneren

0 (geslaagd) of een niet-nulnummer (fout).

Opmerkingen

Als een view niet wordt gemaakt met SCHEMABINDING, sp_refreshview moet worden uitgevoerd wanneer er wijzigingen worden aangebracht aan de objecten die de view onderliggen, wat de definitie van de view beïnvloedt. Anders kan de weergave onverwachte resultaten geven wanneer je deze opvraagt.

Machtigingen

Vereist ALTER toestemming voor de weergave, en REFERENCES toestemming voor common language runtime (CLR) gebruikersgedefinieerde types en XML-schemacollecties waar de kolommen naar verwijzen.

Voorbeelden

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025 of AdventureWorksDW2025 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Eén. De metagegevens van een weergave bijwerken

In het volgende voorbeeld worden de metagegevens voor de weergave Sales.vIndividualCustomervernieuwd.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Een script maken waarmee alle weergaven met afhankelijkheden van een gewijzigd object worden bijgewerkt

Stel dat de tabel Person.Person is gewijzigd op een manier die van invloed is op de definitie van weergaven die erop zijn gemaakt. In het volgende voorbeeld wordt een script gemaakt waarmee de metagegevens worden vernieuwd voor alle weergaven die afhankelijk zijn van de tabel Person.Person.

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