Udostępnij za pośrednictwem


sp_refreshview (języka Transact-SQL)

Aktualizacja metadane dla określonego widoku powiązania schematu.Trwałe metadane dla widoku może stać się nieaktualne z powodu zmian do podstawowych obiektów, od których zależy od widoku.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sp_refreshview [ @viewname = ] 'viewname' 

Argumenty

  • [ @viewname= ] 'viewname'
    Jest to nazwa widoku.viewnamejest nvarchar, z braku domyślne.viewnamemoże być identyfikatorem wieloczęściowe, ale mogą odwoływać się wyłącznie do widoków w bieżącej bazie danych.

Wartości kodów powrotnych

0 (sukces) lub liczbę różną od zera (błąd)

Uwagi

Jeśli widok nie jest tworzony z schemabinding, sp_refreshview należy uruchomić podczas wprowadzania zmian do obiektów leżących u podstaw widoku, które wpływają na definicję widoku.W przeciwnym razie widoku może dawać nieoczekiwane wyniki , gdy dotyczy kwerenda.

Uprawnienia

Wymaga uprawnienia zmiany w widoku i odwołania do popularnych typów language runtime (CLR) zdefiniowane przez użytkownika i kolekcje schematu XML, które odwołują się kolumny widoku.

Przykłady

A.Aktualizacja metadane widok

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

USE AdventureWorks2008R2;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B.Tworzenia skryptów, który aktualizuje wszystkie widoki, których zależności zmienionego obiektu

Załóżmy, że tabela Person.Person został zmieniony w sposób, który mogłyby wpłynąć na definicji żadnych widoków, które są tworzone na typie.Poniższy przykład tworzy skrypt odświeża metadane dla wszystkich widoków, które mają współzależności w tabela Person.Person.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT 'EXEC 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');