1

我正在尝试了解有关 SQL Server 的更多信息,但遇到了一些我不理解的东西。我有一个 SQL Server 2008 数据库(免费版)。我有一个使用通配符定义的视图,如下所示:

Select * from ApplicantApplications

当我检查系统视图“INFORMATION_SCHEMA.VIEW_COLUMN_USAGE”时,我定义的视图中的每一列都在那里。

后来,我更新了申请人申请表并添加了一个字段“TestValue”

当我回头查看系统视图“INFORMATION_SCHEMA.VIEW_COLUMN_USAGE”时,我添加到表中的新列不存在。我定义的视图中包含新列。

我是否需要做一些特别的事情才能使该列出现在系统视图中?我以为它会自动更新。

谢谢!

4

1 回答 1

0

查看需要重新编译,EXEC sp_refreshview Viewname。几年前我为此目的写了一个脚本

Declare @Name varchar(200)
Declare @SQL varchar(300)
DECLARE VCalc CURSOR FOR  Select name from sysobjects
OPEN VCalc
FETCH Next FROM VCalc INTO @Name
WHILE (@@FETCH_STATUS = 0)
    BEGIN
    Select @SQL='if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].'+@Name+''') and OBJECTPROPERTY(id, N''IsView'') = 1) EXEC sp_refreshview '+@Name
    Print @SQL
    Exec (@SQL)
    FETCH Next FROM VCalc INTO @Name
    END
CLOSE VCalc
DEALLOCATE VCalc
于 2012-11-02T22:07:25.733 回答