sp_refreshview (Transact-SQL)

更新指定非結構描述繫結檢視的中繼資料。 檢視所依賴的基礎物件變更之後,檢視的保存中繼資料也可能會過期。

主題連結圖示 Transact-SQL 語法慣例

語法

sp_refreshview [ @viewname = ] 'viewname'

引數

  • [ @viewname= ] 'viewname'
    這是檢視的名稱。 viewname 是 nvarchar,沒有預設值。 viewname 可以是多部分組成的識別碼,但只能是目前資料庫中的檢視。

傳回碼值

0 (成功) 或非零值 (失敗)

備註

如果未以 schemabinding 來建立檢視,當影響檢視定義的檢視之下的物件有變更時,就應該執行 sp_refreshview。 否則,在查詢檢視時,可能會產生非預期的結果。

權限

必須對檢視具備 ALTER 權限,以及對檢視資料行所參考的 Common Language Runtime (CLR) 使用者自訂類型和 XML 結構描述集合,具備 REFERENCES 權限。

範例

A.更新檢視的中繼資料

下列範例會重新整理 Sales.vIndividualCustomer 檢視的中繼資料。

USE AdventureWorks2012;
GO
EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B.建立可更新所有對於已變更物件具有相依性之檢視的指令碼

假設資料表 Person.Person 是以會影響在任何檢視上建立的定義之方式來變更。 下列範例建立了一個指令碼,針對所有對資料表 Person.Person 有相依性的檢視來重新整理中繼資料。

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

請參閱

參考

Database Engine 預存程序 (Transact-SQL)

系統預存程序 (Transact-SQL)

sys.sql_expression_dependencies (Transact-SQL)

sp_refreshsqlmodule (Transact-SQL)