Dela via


sp_refreshview (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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 , ska köras när ändringar görs i objekten som ligger bakom vyn, vilket påverkar definitionen av vyn. Annars kan vyn ge oväntade resultat när den efterfrågas.

Behörigheter

Kräver ALTER-behörighet för vyn och behörigheten REFERENSER för användardefinierade typer av common language runtime (CLR) och XML-schemasamlingar som refereras till av vykolumnerna.

Exempel

A. Uppdatera metadata för en vy

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

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