sp_refreshview (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии)

Обновляет метаданные для заданного, не привязанного к схеме, представления. Постоянные метаданные представления могут устареть вследствие изменения базовых объектов, от которых зависит представление.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

  
sp_refreshview [ @viewname = ] 'viewname'   

Аргументы

[ @viewname = ] 'viewname' Имя представления. ViewName имеет тип nvarchar и не имеет значения по умолчанию. ViewName может быть составным идентификатором, но может ссылаться только на представления в текущей базе данных.

Значения кода возврата

0 (успешное завершение) или ненулевое значение (неуспешное завершение)

Замечания

Если представление не создано с параметром SCHEMABINDING, то sp_refreshview должны выполняться при внесении изменений в объекты, лежащие в основе представления, влияющие на определение представления. В противном случае результат запроса представления может быть непредвиденным.

Разрешения

Требуются разрешение ALTER для представления и разрешение REFERENCES для определяемых пользователями типов данных среды CLR и коллекций XML-схем, на которые ссылаются столбцы представления.

Примеры

A. Обновление метаданных представления

В следующем примере выполняется обновление метаданных представления Sales.vIndividualCustomer.

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

Б. Создание скрипта, обновляющего все представления с зависимостями от измененного объекта

Предполагается, что таблица Person.Person была изменена таким образом, что это повлияло на определение созданных на ней представлений. В следующем примере создается скрипт, обновляющий метаданные для всех представлений с зависимостями от таблицы Person.Person.

USE AdventureWorks2012;  
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');  

См. также:

Ядро СУБД хранимых процедур (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)