sp_refreshview
刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。语法
sp_refreshview [ @viewname = ] 'viewname' 参数
[@viewname =] 'viewname'是视图的名称。viewname 是 nvarchar 类型,可以是由多部分组成的标识符,无默认值。返回代码值
0(成功)或非零数字(失败)权限
sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员以及视图的所有者可以在视图上执行 sp_refreshview。示例
下例刷新视图 titleview 的元数据。exec sp_refreshview titleview

解决方案 »

  1.   

    从syscolumns表中可以看出更新字段长度后,表和视图的字段长度定义是不一样的
      

  2.   

    sp_refreshview
    可以刷新。
    还剩第二个问题,到底有什么好方法重建所有视图?
    是不是只能使用生成sql脚本?
      

  3.   

    刷新所有视图:
    ------------------------------------------------
    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