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.
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');