怪现象,请高手解决?

amandar 2005-01-25 11:18:11

动作:

我对基表T1(ID,C1,C2)增加一个字段C3时,视图出现问题了.

现像:
视图 如下:

SELECT T1.*, t2.ct1,t2.ct2 FROM T1 LEFT OUTER JOIN
T2 ON T1.ID = T2.ID

视图设计器中查到
id c1 c2 c3 ct1 ct2
1 1 1 1 2 3

在查询分析器中(查询视图,以及所有的引用这个视图的存储过程结果都如下)
id c1 c2 ct1 ct2
1 1 1 1 2

看出来没有C3列的名字没了,但是值却有,C3的列名变成了CT1,原来CT1的列变成了CT2.

现在数据库还没有重启.因为数据库比较多人使用.


...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
631799 2005-01-25
  • 打赏
  • 举报
回复
/*
更新数据库中的所有视图
解决由于视图所依赖的基础对象的更改,视图的持久元数据会过期。
注意:此更新是针对当前数据库,所以之前要先打开要更新的数据库
*/

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
631799 2005-01-25
  • 打赏
  • 举报
回复
更改基表结构后,相关的视图要重编译。
exec sp_refreshview '视图名'
631799 2005-01-25
  • 打赏
  • 举报
回复
exec sp_refreshview '视图名'
lishengyu 2005-01-25
  • 打赏
  • 举报
回复
up
amandar 2005-01-25
  • 打赏
  • 举报
回复
解决了了,只要重建视图就可以了.
gimy007 2005-01-25
  • 打赏
  • 举报
回复
重新更新一下视图
sdhdy 2005-01-25
  • 打赏
  • 举报
回复
估计重启一下,就没问题了。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧