sys.sp_refreshview(Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Microsoft 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 (成功) 或非零數字 (失敗)。

備註

如果你沒有建立一個包含 SCHEMABINDING的 sp_refreshview 檢視,則執行該檢視的底層物件,這些變更會影響檢視的定義。 否則,當你查詢視圖時,可能會回傳意想不到的結果。

權限

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

範例

本文的程式碼範例使用AdventureWorks2025了 、 AdventureWorksDW2025或AdventureWorksLT2025範例資料庫,你可以從 Azure Data SQL 範例庫 GitHub 下載。

A。 更新檢視的元數據

下列範例會重新整理檢視 Sales.vIndividualCustomer的元數據。

Note

在 Azure SQL Database 和 Microsoft Fabric 中的 SQL 資料庫中,這個USE語句都無法使用。 相反地,直接連接到預期的資料庫,執行剩餘的程式碼範例。

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