sp_refreshview (Transact-SQL)
指定された非スキーマ バインド ビューのメタデータを更新します。 ビューの生成元であるオブジェクトを変更すると、ビューに固有のメタデータが古くなることがあります。
構文
sp_refreshview [ @viewname = ] 'viewname'
引数
- [ @viewname= ] 'viewname'
ビューの名前を指定します。 viewname のデータ型は nvarchar で、既定値はありません。 viewname として複数の要素から構成される識別子を指定できますが、参照できるのは現在のデータベース内のビューのみです。
リターン コードの値
成功した場合は 0 を、失敗した場合は 0 以外の値をそれぞれ返します。
説明
ビューがスキーマ バインドを使用して作成されていない場合は、ビューの定義に影響するビューの基になるオブジェクトに対する変更が行われたときに、sp_refreshview を実行する必要があります。 この操作を行わないと、ビューのクエリ時に、予期しない結果が表示される可能性があります。
権限
ビューに対する ALTER 権限と、共通言語ランタイム (CLR) ユーザー定義型およびビュー列で参照される XML スキーマ コレクションに対する REFERENCES 権限が必要です。
使用例
A. ビューのメタデータの更新
次の例では、ビュー Sales.vIndividualCustomer のメタデータを更新します。
USE AdventureWorks2012;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
B. 変更されたオブジェクトに対する依存関係があるすべてのビューを更新するスクリプトの作成
テーブル Person.Person に対して作成された任意のビューの定義に影響を与える形で、このテーブルが変更されたとします。 次の例では、テーブル Person.Person に対する依存関係があるすべてのビューについて、メタデータを更新するスクリプトを作成しています。
USE AdventureWorks2012;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + ''''
FROM sys.objects AS so
INNER JOIN sys.sql_expression_dependencies AS sed
ON so.object_id = sed.referencing_id
WHERE so.type = 'V' AND sed.referenced_id = OBJECT_ID('Person.Person');
関連項目
参照
データベース エンジンのストアド プロシージャ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)