次の方法で共有


sp_refreshview (Transact-SQL)

更新 : 2006 年 4 月 14 日

指定された非 SCHEMABOUND ビューのメタデータを更新します。ビューの生成元であるオブジェクトを変更すると、ビューに固有のメタデータが古くなることがあります。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_refreshview [ @viewname = ] 'viewname' 

引数

  • [ @viewname= ] 'viewname'
    ビューの名前です。viewnamenvarchar であり、既定値はありません。viewname として複数の要素から構成される識別子を指定できますが、参照できるのは現在のデータベース内のビューのみです。

リターン コードの値

成功した場合は 0 を、失敗した場合は 0 以外の値をそれぞれ返します。

解説

ビューがスキーマ バインドを使用して作成されていない場合は、ビューの定義に影響するビューの基になるオブジェクトに対する変更が行われたときに、sp_refreshview を実行する必要があります。この操作を行わないと、ビューの照会時に、予期しない結果が表示される可能性があります。

権限

ビューに対する ALTER 権限と、共通言語ランタイム (CLR) ユーザー定義型およびビュー列で参照される XML スキーマ コレクションに対する REFERENCES 権限が必要です。

A. ビューのメタデータの更新

次の例では、ビュー Sales.vIndividualCustomer のメタデータを更新します。

USE AdventureWorks;
GO
exec sp_refreshview N'Sales.vIndividualCustomer';

B. 変更されたオブジェクトに対する依存関係があるすべてのビューを更新するスクリプトの作成

テーブル Person.Contact に対して作成された任意のビューの定義に影響を与える形で、このテーブルが変更されたとします。次の例では、テーブル Person.Contact に対する依存関係があるすべてのビューについて、メタデータを更新するスクリプトを作成しています。

USE AdventureWorks;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' 
FROM sys.objects so INNER JOIN sys.sql_dependencies sd 
ON so.object_id = sd.object_id 
WHERE type = 'V' 
AND sd.referenced_major_id = object_id('Person.Contact') 

参照

関連項目

データベース エンジンのストアド プロシージャ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • sp_refreshview を使用する理由を明示するために、「解説」を追加しました。
  • 例 B を追加しました。
変更内容 :
  • 例 A を更新しました。