sp_refreshview
刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。语法
sp_refreshview [ @viewname = ] 'viewname' 参数
[@viewname =] 'viewname'是视图的名称。viewname 是 nvarchar 类型,可以是由多部分组成的标识符,无默认值。返回代码值
0(成功)或非零数字(失败)权限
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员以及视图的所有者可以在视图上执行 sp_refreshview。示例
下例刷新视图 titleview 的元数据。exec sp_refreshview titleview
刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。语法
sp_refreshview [ @viewname = ] 'viewname' 参数
[@viewname =] 'viewname'是视图的名称。viewname 是 nvarchar 类型,可以是由多部分组成的标识符,无默认值。返回代码值
0(成功)或非零数字(失败)权限
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员以及视图的所有者可以在视图上执行 sp_refreshview。示例
下例刷新视图 titleview 的元数据。exec sp_refreshview titleview
可以刷新。
还剩第二个问题,到底有什么好方法重建所有视图?
是不是只能使用生成sql脚本?
------------------------------------------------
declare @view varchar(1000)declare v_cursor cursor for
select name from sysobjects where xtype = 'V' open v_cursorfetch next from v_cursor into @viewwhile @@fetch_status=0
begin
exec('exec sp_refreshview '+@view)
fetch next from v_cursor into @view
endclose v_cursor
deallocate v_cursor