Partilhar via


sp_refreshview (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Atualiza os metadados para a exibição não associada a esquema. Os metadados persistentes de uma exibição podem tornar-se desatualizados devido a alterações em objetos subjacentes dos quais a exibição depende.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_refreshview [ @viewname = ] 'viewname'
[ ; ]

Argumentos

@viewname [ = ] 'nome da vista'

O nome da exibição. @viewname é nvarchar, sem padrão. @viewname pode ser um identificador de várias partes, mas só pode se referir a exibições no banco de dados atual.

Valores do código de retorno

0 (sucesso) ou um número diferente de zero (falha).

Comentários

Se uma exibição não for criada com SCHEMABINDING, sp_refreshview deverá ser executada quando forem feitas alterações nos objetos subjacentes à exibição, o que afeta a definição da exibição. Caso contrário, a exibição poderá produzir resultados inesperados quando for consultada.

Permissões

Requer permissão ALTER na exibição e permissão REFERENCES em tipos definidos pelo usuário de common language runtime (CLR) e coleções de esquema XML referenciadas por colunas de exibição.

Exemplos

R. Atualizar os metadados de uma exibição

O exemplo a seguir atualiza os metadados da exibição Sales.vIndividualCustomer.

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Criar um script que atualiza todas as exibições que têm dependências em um objeto alterado

Considera que a tabela Person.Person foi alterada de certo modo que afeta a definição de qualquer exibição criada a partir dela. O exemplo a seguir cria um script que atualiza os metadados de todas as exibições com dependência da tabela Person.Person.

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