sp_refreshview (Transact-SQL)
適用於:SQL Server
Azure SQL 資料庫
Azure 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');