Sdílet prostřednictvím


sp_refreshview (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

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 pohled není vytvořen s , SCHEMABINDINGsp_refreshview měl by být spuštěn při změnách objektů, které jsou v pohledu základem, což ovlivňuje definici pohledu. Jinak by pohled mohl při dotazování přinést neočekávané výsledky.

Povolení

Vyžaduje ALTER oprávnění k zobrazení a REFERENCES k uživatelsky definovaným typům a XML schématům, na které odkazují sloupce pohledu v běžném jazyce (CLR).

Příklady

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

A. Aktualizace metadat zobrazení

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

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