共用方式為


sp_refreshview (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

更新指定之非架構系結檢視的元數據。 檢視的持續性元數據可能會因為檢視相依的基礎物件變更而過時。

Transact-SQL 語法慣例

語法

sp_refreshview [ @viewname = ] 'viewname'
[ ; ]

引數

[ @viewname = ] 「視圖名稱

檢視的名稱。 @viewname為 nvarchar,沒有預設值。 @viewname可以是多部分標識符,但只能參考目前資料庫中的檢視。

傳回碼值

0 (成功) 或非零數字 (失敗)。

備註

如果一個視圖沒有建立 SCHEMABINDINGsp_refreshview 則應該在對該視圖底層物件做變更時執行,這會影響視圖的定義。 否則,當你查詢時,這個視圖可能會產生意想不到的結果。

權限

需要 ALTER 對視圖的權限,以及 REFERENCES 對公共語言執行時(CLR)使用者定義型別和視圖欄位所參考的 XML 結構集合的權限。

範例

本文中的程式代碼範例會使用 AdventureWorks2025AdventureWorksDW2025 範例資料庫,您可以從 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');