适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 中的 SQL 数据库
sys.sp_refreshview系统存储过程会更新指定的非模式绑定视图的元数据。 由于视图所依赖的基础对象的更改,视图的持久元数据会过期。
语法
sys.sp_refreshview [ @viewname = ] N'viewname'
[ ; ]
参数
[ @viewname = ] N'viewname'
视图的名称。 @viewname为 nvarchar,没有默认值。 @viewname可以是多部分标识符,但只能引用当前数据库中的视图。
返回代码值
0(成功)或非零数字(失败)。
注解
如果你没有创建带有 SCHEMABINDING的 sp_refreshview 视图,运行时对视图底层对象做出影响视图定义的更改。 否则,查询视图时可能会返回意想不到的结果。
权限
需要 ALTER 对视图的权限,以及 REFERENCES 对视图列所引用的通用语言运行时(CLR)用户自定义类型和XML模式集合的权限。
示例
本文中的代码示例使用AdventureWorks2025了 、 AdventureWorksDW2025或AdventureWorksLT2025示例数据库,您可以从 Azure Data SQL Samples Repository 的 GitHub 仓库下载。
答: 更新视图的元数据
以下示例刷新视图 Sales.vIndividualCustomer 的元数据。
USE AdventureWorks2025;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
B. 创建一个脚本,用于更新依赖于已更改对象的所有视图
假设该表 Person.Person 的更改影响了其上任何视图的定义。 以下示例创建了一个脚本,为所有依赖于表 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');