sp_refreshview (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstâ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_do_visualização'

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 um modo de exibição não for criado com SCHEMABINDING, deverá ser executado quando forem feitas alterações nos objetos subjacentes ao modo de exibição, sp_refreshview que afetam a definição do modo de exibição. Caso contrário, a exibição poderá gerar resultados inesperados quando 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 um modo de 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 atualize todos os modos de exibição que tenham 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');