sp_refreshview (Transact-SQL)

Actualizado: 14 de abril de 2006

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.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_refreshview [ @viewname = ] 'viewname' 

Argumentos

  • [ @viewname= ] 'viewname'
    Es el nombre de la vista. viewname es de tipo nvarchar y no tiene ningún valor predeterminado. El parámetro viewname puede ser un identificador con varias partes, pero sólo puede hacer referencia a las vistas de la base de datos actual.

Notas

Si la vista no se crea con la cláusula SCHEMABINDING, es necesario ejecutar sp_refreshview cuando se realizan cambios en los objetos subyacentes de la vista que afectan a la definición de la vista. De lo contrario, la vista puede generar resultados inesperados cuando se realiza una consulta.

Permisos

Requiere el permiso ALTER en la vista y el permiso REFERENCES en los tipos definidos por el usuario Common Language Runtime (CLR) y las colecciones de esquemas XML a los que hacen referencia las columnas de la vista.

Valores de código de retorno

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

Ejemplos

A. Actualizar los metadatos de una vista

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

USE AdventureWorks;
GO
exec sp_refreshview N'Sales.vIndividualCustomer';

B. Crear una secuencia de comandos que actualiza todas las vistas que tienen dependencias en un objeto modificado

Suponga que la tabla Person.Contact 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 una secuencia de comandos que actualiza los metadatos de todas las vistas que tienen una dependencia en la tabla Person.Contact.

USE AdventureWorks;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' 
FROM sys.objects so INNER JOIN sys.sql_dependencies sd 
ON so.object_id = sd.object_id 
WHERE type = 'V' 
AND sd.referenced_major_id = object_id('Person.Contact') 

Vea también

Referencia

Procedimientos almacenados del motor de base de datos (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido nuevo:
  • Se agregó la sección Notas para aclarar el motivo para usar sp_refreshview.
  • Se agregó el ejemplo B.
Contenido modificado:
  • Se actualizó el ejemplo A.