Compartir a través de


sp_refreshview (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Actualiza los metadatos de la vista no enlazada a esquema especificada. Los metadatos persistentes de una vista pueden quedar desfasados debido a los cambios realizados en los objetos subyacentes de los que depende la vista.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @viewname = ] 'nombre de la vista'

El nombre de la vista. @viewname es nvarchar, sin valor predeterminado. @viewname puede ser un identificador de varias partes, pero solo puede hacer referencia a las vistas de la base de datos actual.

Valores de código de retorno

0 (correcto) o un número distinto de cero (error).

Comentarios

Si no se crea una vista con SCHEMABINDING, sp_refreshview debe ejecutarse cuando se hacen cambios en los objetos subyacentes a la vista, lo que afecta a la definición de la vista. De lo contrario, la vista podría producir resultados inesperados cuando la consultes.

Permisos

Requiere ALTER permiso en la vista y REFERENCES permiso en los tipos definidos por el usuario en tiempo de ejecución del lenguaje común (CLR) y en colecciones de esquemas XML que referencian las columnas de vista.

Ejemplos

Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.

A Actualización de los metadatos de una vista

En el siguiente ejemplo se actualizan los metadatos de la vista Sales.vIndividualCustomer.

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Cree un script que actualice todas las vistas que tienen dependencias en un objeto modificado.

Suponga que la tabla Person.Person se modificó de una forma que afecte a la definición de todas las vistas que se creen en ella. En el siguiente ejemplo se crea un script que actualiza los metadatos de todas las vistas que tienen una dependencia en la tabla 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');