最近修改了数据库表结构,数据同步的时候出了问题,发现不少数据明明已经修改,可是经过视图筛选出来的仍是原来的数据,因此怀疑应该是视图缓存了数据,在园子里找到下面的博文,在这里作个记录备忘。html
原文连接:http://www.cnblogs.com/yashen/archive/2004/12/23/81000.htmlsql
咱们在使用SqlServer时常常遇到这种状况,当修改某个表的结构后,相关的视图就不对了而致使程序错误,所以就有个下面这个存储过程。数据库
CREATE
PROCEDURE
RefreshAllView
AS
DECLARE
MyCursor
CURSOR
FOR
select
Name
from
dbo.sysobjects
where
OBJECTPROPERTY(id, N
'IsView'
) = 1
and
(
not
name
in
(
'sysconstraints'
,
'syssegments'
))
DECLARE
@
name
varchar
(40)
OPEN
MyCursor
FETCH
NEXT
FROM
MyCursor
INTO
@
name
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
begin
exec
sp_refreshview @
name
end
FETCH
NEXT
FROM
MyCursor
INTO
@
name
END
CLOSE
MyCursor
DEALLOCATE
MyCursor
|