適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL データベース
指定された非スキーマ バインド ビューのメタデータを更新します。 ビューが依存する基になるオブジェクトが変更されたため、ビューの永続的なメタデータが古くなる可能性があります。
構文
sp_refreshview [ @viewname = ] 'viewname'
[ ; ]
引数
[ @viewname = ] 「ビューネーム」
ビューの名前です。 @viewname は nvarchar で、既定値はありません。 @viewname マルチパート識別子を指定できますが、現在のデータベース内のビューのみを参照できます。
リターン コードの値
0 (成功) または 0 以外の数値 (失敗)
解説
もしビューが SCHEMABINDINGで作成されていない場合、ビューの基盤となるオブジェクトに変更が加えられ、ビューの定義に影響を与える際に sp_refreshview を実行するべきです。 そうでなければ、クエリ時に予期しない結果が出る可能性があります。
アクセス許可
ビューに対する権限 ALTER 、ビューカラムが参照する共通言語ランタイム(CLR)ユーザー定義型およびXMLスキーマコレクションに対する権限 REFERENCES 必要です。
例
この記事のコード サンプルでは、AdventureWorks2025 または AdventureWorksDW2025 サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクト ホーム ページからダウンロードできます。
A。 ビューのメタデータを更新する
次の例では、ビュー Sales.vIndividualCustomer のメタデータを更新します。
USE AdventureWorks2025;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';
B. 変更されたオブジェクトに依存するすべてのビューを更新するスクリプトを作成する
テーブル Person.Person に対して作成された任意のビューの定義に影響を与える形で、このテーブルが変更されたとします。 次の例では、テーブル Person.Person に対する依存関係があるすべてのビューについて、メタデータを更新するスクリプトを作成しています。
USE AdventureWorks2025;
GO
SELECT DISTINCT 'EXECUTE 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');