sys.sp_refreshview(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

sys.sp_refreshviewシステムのストアドプロシージャは、指定された非スキーマバウンドビューのメタデータを更新します。 ビューが依存する基になるオブジェクトが変更されたため、ビューの永続的なメタデータが古くなる可能性があります。

Transact-SQL 構文表記規則

構文

sys.sp_refreshview [ @viewname = ] N'viewname'
[ ; ]

引数

[ @viewname = ] N'viewname'

ビューの名前です。 @viewname は nvarchar で、既定値はありません。 @viewname マルチパート識別子を指定できますが、現在のデータベース内のビューのみを参照できます。

リターン コードの値

0 (成功) または 0 以外の数値 (失敗)

解説

SCHEMABINDINGでビューを作成していない場合は、ビューの定義に影響を与えるオブジェクトの変更を加えたときにsp_refreshviewを実行してください。 そうしないと、クエリ時に予期しない結果が返ってくるかもしれません。

アクセス許可

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

例

この記事のコードサンプルは、AdventureWorks2025、AdventureWorksDW2025、またはAdventureWorksLT2025サンプルデータベースを使用しており、Azure Data SQL Samples Repository GitHubリポジトリからダウンロードできます。

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');