您的位置:首页 > 其它

这个好东西我都找了好久了,呵呵,懒啊,人越来越懒了,^_^

2006-02-21 00:16 351 查看
一般来说,在修改表的结构之后,与些表对应的视图也应该重建,以适应新表结构的变化。因此,在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

此过程不仅可以解决重建所有视图的问题,还可以通过重建,发现系统中某些视图的语法错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: