Partilhar via


sp_refreshview (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Atualiza os metadados para a exibição não vinculada ao esquema especificada. Os metadados persistentes de uma exibição podem ficar desatualizados devido a alterações nos objetos subjacentes dos quais a exibição depende.

Transact-SQL convenções de sintaxe

Sintaxe

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

Argumentos

@viewname [ = ] 'viewname'

O nome do modo de 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 de código de retorno

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

Observações

Se uma vista não for criada com SCHEMABINDING, sp_refreshview deve ser executado quando forem feitas alterações aos objetos subjacentes à vista, o que afeta a definição da vista. Caso contrário, a visualização pode produzir resultados inesperados quando a consultas.

Permissões

Requer ALTER permissão para a vista e REFERENCES permissão para tipos definidos pelo utilizador em tempo de execução de linguagem comum (CLR) e coleções de esquemas XML referenciadas pelas colunas da vista.

Exemplos

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

Um. Atualizar os metadados de uma vista

O exemplo a seguir atualiza os metadados do modo de exibição Sales.vIndividualCustomer.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Criar um script que atualiza todos os modos de exibição que têm dependências em um objeto alterado

Suponha que a tabela Person.Person foi alterada de uma forma que afetaria a definição de quaisquer modos de exibição criados nela. O exemplo a seguir cria um script que atualiza os metadados para todos os modos de exibição que têm uma dependência da tabela Person.Person.

USE AdventureWorks2025;
GO

SELECT DISTINCT 'EXECUTE 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');