sys.sp_refreshview (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstancePunkt końcowy analizy SQL w usłudze Microsoft FabricMagazyn w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Procedura przechowywana w systemie aktualizuje sys.sp_refreshview metadane dla określonego widoku niepowiązanego ze schematem. Trwałe metadane widoku mogą stać się nieaktualne z powodu zmian w obiektach bazowych, od których zależy widok.

Transact-SQL konwencje składni

Składnia

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

Argumenty (w programowaniu)

[ @viewname = ] N'viewname'

Nazwa widoku. @viewname to nvarchar bez wartości domyślnej. @viewname może być identyfikatorem wieloczęściowym, ale może odwoływać się tylko do widoków w bieżącej bazie danych.

Zwracanie wartości kodu

0 (powodzenie) lub liczba niezerowa (niepowodzenie).

Uwagi

Jeśli nie utworzysz widoku z SCHEMABINDING, uruchom sp_refreshview się, gdy wprowadzasz zmiany w obiektach leżących u podstaw widoku, które wpływają na definicję widoku. W przeciwnym razie widok może zwracać nieoczekiwane wyniki podczas zapytania.

Uprawnienia

Wymaga ALTER uprawnień do widoku oraz REFERENCES uprawnień do typów zdefiniowanych przez użytkownika w języku common language (CLR) oraz kolekcji schematów XML, do których odnoszą się kolumny widoku.

Przykłady

Przykłady kodu opisane w tym artykule korzystają z bazy , AdventureWorksDW2025, czyli AdventureWorksLT2025 przykładowej bazy AdventureWorks2025danych, którą możesz pobrać z repozytorium GitHub w repozytorium Azure Data SQL Samples Repository.

Odp. Aktualizowanie metadanych widoku

Poniższy przykład odświeża metadane widoku Sales.vIndividualCustomer.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Tworzenie skryptu, który aktualizuje wszystkie widoki, które mają zależności od zmienionego obiektu

Załóżmy, że tabela Person.Person została zmieniona w sposób, który wpływa na definicję jakichkolwiek poglądów na jej temat. Poniższy przykład tworzy skrypt, który odświeża metadane dla wszystkich widoków zależnych od tabeli 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');