Поделиться через


sp_refreshview (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

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

Синтаксис

sp_refreshview [ @viewname = ] 'viewname'

Аргументы

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

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

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

Замечания

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

Разрешения

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

Примеры

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

В следующем примере выполняется обновление метаданных представления 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)