sp_refreshview (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Uppdaterar metadata för den angivna icke-schemabundna vyn. Beständiga metadata för en vy kan bli inaktuella på grund av ändringar i de underliggande objekt som vyn är beroende av.

Transact-SQL syntaxkonventioner

Syntax

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

Argumentpunkter

[ @viewname = ] "viewname"

Namnet på vyn. @viewname är nvarchar, utan standard. @viewname kan vara en identifierare för flera delar, men kan bara referera till vyer i den aktuella databasen.

Returnera kodvärden

0 (lyckades) eller ett icke-nolltal (fel).

Anmärkningar

Om en vy inte skapas med SCHEMABINDING, sp_refreshview bör köras när ändringar görs i objekten som ligger under vyn, vilket påverkar definitionen av vyn. Annars kan vyn ge oväntade resultat när du frågar den.

Behörigheter

Kräver ALTER behörighet för vyn, samt REFERENCES behörighet för common language runtime (CLR) användardefinierade typer och XML-schemasamlingar som vykolumnerna refererar till.

Exempel

Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

A. Uppdatera metadata för en vy

I följande exempel uppdateras metadata för vyn Sales.vIndividualCustomer.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Skapa ett skript som uppdaterar alla vyer som har beroenden för ett ändrat objekt

Anta att tabellen Person.Person har ändrats på ett sätt som påverkar definitionen av alla vyer som skapas på den. I följande exempel skapas ett skript som uppdaterar metadata för alla vyer som har ett beroende av tabellen 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');