数据表结构变了,刷新视图的方法

最笨、最直接的方法:用查询分析器的修改视图功能,修改之后自动更新。
存储过程方法:
方法一:sp_recompile '你修改过的表'
# 刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。
这是刷新与这个表相关的视图的存储过程,没验证过,不知道是否有用!
方法二: sp_refreshview ViewName
如果 object 是表或视图的名称,那么所有引用该表或视图的存储过程都将在下次运行时重新编译。
这是刷新一个视图。
方法二可以扩展,通过撰写sql语句批量刷新视图:
Declare @S Varchar(1000) 
Select @S='' 
select @S=@S+' sp_refreshview '''+name+''';' from sysobjects where xtype='v' and status>0 and name like '%视图规范%' 
EXEC(@S)
其它参考:
CREATE TABLE #(name sysname, type sysname) 
INSERT # EXEC sp_depends 'tb' -- 这里是你修改了结构的表名 
IF @@ROWCOUNT = 0 
RETURN 
DECLARE tb CURSOR LOCAL 
FOR 
SELECT 'sp_refreshview ' + QUOTENAME(name, '''') 
FROM # 
WHERE type = 'view' 
DECLARE @s nvarchar(1000) 
OPEN tb 
FETCH tb INTO @s 
WHILE @@FETCH_STATUS = 0 
BEGIN 
EXEC(@s) 
FETCH tb INTO @s 
END 
CLOSE tb 
DEALLOCATE tb 
DROP TABLE #
本文来源于 龙卷风资讯网 http://www.ljf.cn/ ;原文地址:http://www.ljf.cn/2009/6/Item121140.html

最笨、最直接的方法:用查询分析器的修改视图功能,修改之后自动更新。

存储过程方法:

方法一:sp_recompile '你修改过的表' 

刷新指定视图的元数据。由于视图所依赖的基础对象的更改,视图的持久元数据会过期。这是刷新与这个表相关的视图的存储过程,没验证过,不知道是否有用!

方法二: sp_refreshview ViewName

如果 object 是表或视图的名称,那么所有引用该表或视图的存储过程都将在下次运行时重新编译。这是刷新一个视图。

方法二可以扩展,通过撰写sql语句批量刷新视图:

Declare @S Varchar(1000) 

Select @S='' select @S=@S+' sp_refreshview '''+name+''';' from sysobjects where xtype='v' and status>0 and name like '%视图规范%' EXEC(@S)

其它参考:

CREATE TABLE #(name sysname, type sysname) 

INSERT # EXEC sp_depends 'tb' -- 这里是你修改了结构的表名 

IF @@ROWCOUNT = 0 

RETURN DECLARE tb CURSOR LOCAL FOR 

SELECT 'sp_refreshview ' + QUOTENAME(name, '''')

 FROM # 

WHERE type = 'view' 

DECLARE @s nvarchar(1000) 

OPEN tb 

FETCH tb INTO @s WHILE @@FETCH_STATUS = 0

 BEGIN 

EXEC(@s) FETCH tb INTO @s 

END 

CLOSE tb DEALLOCATE 

 

 

posted @ 2010-07-10 14:57  李传涛  阅读(382)  评论(0)    收藏  举报