sys.sp_refreshview (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceKoncový bod analýz SQL v prostředí Microsoft FabricSklad v prostředí Microsoft FabricDatabáze SQL v prostředí Microsoft Fabric

Procedura uložená v systému aktualizuje sys.sp_refreshview metadata pro specifikovaný pohled bez schématového režimu. 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

sys.sp_refreshview [ @viewname = ] N'viewname'
[ ; ]

Argumenty

[ @viewname = ] N'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 nevytvoříte pohled s SCHEMABINDING, spouštějte sp_refreshview , když změníte objekty, které jsou základem pohledu, a které ovlivňují definici pohledu. Jinak by pohled mohl při dotazování vrátit 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í databázi , AdventureWorksDW2025, neboli AdventureWorksLT2025 ukázkovou databáziAdventureWorks2025, kterou si můžete stáhnout z Azure Data SQL Samples Repository GitHub repository.

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 tak, že to ovlivní definici jakýchkoli názorů na ni. Následující příklad vytváří skript, který obnovuje metadata pro všechny pohledy závislé 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');