Sdílet prostřednictvím


sp_refreshview (Transact-SQL)

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Aktualizuje metadata pro zadané zobrazení vázané na schéma. Trvalá metadata zobrazení můžou být zastaralá kvůli změnám podkladových objektů, na kterých zobrazení závisí.

Transact-SQL konvence syntaxe

Syntaxe

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

Argumenty

[ @viewname = ] 'viewname'

Název zobrazení. @viewname je nvarchar, bez výchozího nastavení. @viewname může být identifikátor více částí, ale může odkazovat pouze na zobrazení v aktuální databázi.

Hodnoty návratového kódu

0 (úspěch) nebo nenulové číslo (selhání).

Poznámky

Pokud se zobrazení nevytvořilo pomocí SCHEMABINDING, mělo by se spustit při sp_refreshview změnách v objektech, které jsou podkladovým zobrazením, což má vliv na definici zobrazení. V opačném případě může zobrazení vygenerovat neočekávané výsledky při dotazech.

Povolení

Vyžaduje oprávnění ALTER pro zobrazení a REFERENCE oprávnění pro uživatelem definované typy CLR (Common Language Runtime) a kolekce schémat XML, na které odkazují sloupce zobrazení.

Příklady

A. Aktualizace metadat zobrazení

Následující příklad aktualizuje metadata pro zobrazení Sales.vIndividualCustomer.

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Vytvoření skriptu, který aktualizuje všechna zobrazení, která mají závislosti na změněný objekt

Předpokládejme, že tabulka Person.Person byla změněna způsobem, který by ovlivnil definici všech zobrazení, která jsou na ní vytvořena. Následující příklad vytvoří skript, který aktualizuje metadata pro všechna zobrazení, která mají závislost na tabulce 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');