sp_refreshview (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

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

Transact-SQL 語法慣例

語法

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

引數

[ @viewname = ] 'viewname'

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

傳回碼值

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

備註

如果未使用 SCHEMABINDING 建立檢視, sp_refreshview 則應該在對檢視基礎的對象進行變更時執行,這會影響檢視的定義。 否則,在查詢檢視時,可能會產生非預期的結果。

權限

需要 Common Language Runtime (CLR) 使用者定義類型和檢視數據行所參考之 XML 架構集合之檢視的 ALTER 許可權和 REFERENCES 許可權。

範例

A. 更新檢視的元數據

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

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. 建立腳本,以更新與變更物件有相依性的所有檢視

假設數據表 Person.Person 已變更,其會影響其上所建立之任何檢視的定義。 下列範例會建立腳本,針對數據表 相 Person.Person依性的所有檢視重新整理元數據。

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