一般来说,在修改表的结构之后,与些表对应的视图也应该重建,以适应新表结构的变化。因此,在DBMS中应该提供重建视图的相关命令。在Oracle中提供了这样的procedure,一些oralce的三方工具,如Toad、Rapid Sql等都提供了对应的工具直接执行重建视图的命令,但是在Sql server中却没有提供。

 

查了一下sql server的帮助,发现有这样一个过程:

sp_refreshview
刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。

因此,我们可以自己建一个过程来实现重建所有视图,如下:

create procedure RefreshAllView
as

declare @ViewName varchar(250)
declare #views cursor for select name from sysobjects
 where objectproperty(id,N'IsView')=1 and uid=1 order by name
open #views
fetch next from #views into @viewname
while @@fetch_status=0
begin
 print '正在更新: '+@viewname
 exec sp_refreshview @viewname --更新视图
 
 fetch next from #views into @viewname
end
close #views
deallocate #views

go

 

--调用:

exec RefreshAllView

 

此过程不仅可以解决重建所有视图的问题,还可以通过重建,发现系统中某些视图的语法错误。

 

相关文章:

  • 2021-06-09
  • 2022-01-08
  • 2022-12-23
  • 2021-10-24
  • 2022-12-23
  • 2021-06-17
  • 2021-08-11
  • 2021-10-31
猜你喜欢
  • 2021-07-17
  • 2021-09-02
  • 2021-12-14
  • 2022-12-23
  • 2021-07-06
  • 2021-09-13
  • 2021-07-08
相关资源
相似解决方案