sp_refreshview (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance
Updates the metadata for the specified non-schema-bound view. Persistent metadata for a view can become outdated because of changes to the underlying objects upon which the view depends.
Transact-SQL syntax conventions
sp_refreshview [ @viewname = ] 'viewname'
[ ; ]
The name of the view. @viewname is nvarchar, with no default. @viewname can be a multipart identifier, but can only refer to views in the current database.
0
(success) or a nonzero number (failure).
If a view isn't created with SCHEMABINDING, sp_refreshview
should be run when changes are made to the objects underlying the view, which affect the definition of the view. Otherwise, the view might produce unexpected results when it's queried.
Requires ALTER permission on the view and REFERENCES permission on common language runtime (CLR) user-defined types and XML schema collections that are referenced by the view columns.
The following example refreshes the metadata for the view Sales.vIndividualCustomer
.
USE AdventureWorks2022;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
Assume that the table Person.Person
was changed in a way that would affect the definition of any views that are created on it. The following example creates a script that refreshes the metadata for all views that have a dependency on table 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');