sp_refreshview (Transact-SQL)
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.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Convenciones 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 valor predeterminado. viewname puede ser un identificador con 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 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.
Ejemplos
A.Actualizar los metadatos de una vista
En el siguiente ejemplo se actualizan los metadatos de la vista Sales.vIndividualCustomer.
USE AdventureWorks2012;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
B.Crear un script que actualiza 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 AdventureWorks2012;
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');
Vea también
Referencia
Procedimientos almacenados del motor de base de datos (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)