Megosztás a következőn keresztül:


sp_refreshview (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Frissíti a megadott nem sémaalapú nézet metaadatait. A nézet állandó metaadatai elavulttá válhatnak azon mögöttes objektumok módosítása miatt, amelyektől a nézet függ.

Transact-SQL szintaxis konvenciók

Szemantika

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

Érvek

[ @viewname = ] 'viewname'

A nézet neve. @viewnamenvarchar, alapértelmezés nélkül. @viewname többrészes azonosító lehet, de csak az aktuális adatbázisban lévő nézetekre hivatkozhat.

Kódértékek visszaadása

0 (sikeres) vagy nem nulla számot (hiba).

Megjegyzések

Ha egy nézetet nem hoznak létre , SCHEMABINDINGsp_refreshview akkor futtatni kell, amikor változtatják a nézet mögött álló objektumokat, ami befolyásolja a nézet definícióját. Ellenkező esetben a nézet váratlan eredményeket hozhat, amikor lekérdezed.

Engedélyek

Engedélyt ALTER igényel a nézethez, valamint REFERENCES engedélyt a közös nyelvű futás (CLR) felhasználó által definiált típusokhoz és XML sémagyűjteményekhez, amelyekre a nézeti oszlopok hivatkoznak.

Példák

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

Egy. Nézet metaadatainak frissítése

Az alábbi példa frissíti a nézet Sales.vIndividualCustomermetaadatait.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Olyan szkript létrehozása, amely frissíti a módosított objektumtól függő összes nézetet

Tegyük fel, hogy a táblát Person.Person úgy módosították, hogy az hatással lenne a rajta létrehozott nézetek definíciójára. Az alábbi példa egy szkriptet hoz létre, amely frissíti a metaadatokat az összes olyan nézethez, amely függ a táblától 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');