1

SQL Serverについてもっと知りたいのですが、理解できないことがありました。SQL Server 2008データベース(無料バージョン)があります。次のように、ワイルドカードを使用して定義したビューがあります。

Select * from ApplicantApplications

システムビュー「INFORMATION_SCHEMA.VIEW_COLUMN_USAGE」を確認すると、定義したビューの各列がそこにありました。

後で、ApplicantApplicationテーブルを更新し、フィールド「TestValue」を追加しました

システムビュー「INFORMATION_SCHEMA.VIEW_COLUMN_USAGE」を振り返ると、テーブルに追加した新しい列がありませんでした。私が定義したビューには、新しい列が含まれています。

その列をシステムビューに表示するには、何か特別なことをする必要がありますか?自動的に更新されると思いました。

ありがとう!

4

1 に答える 1

0

ビューには再コンパイル、EXECsp_refreshviewビュー名が必要です。数年前、私はこの目的のためにスクリプトを書きました

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 に答える