最笨、最直接的方法:用查询分析器的修改视图功能,修改之后自动更新。
存储过程方法:
方法一: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