sp_refreshview (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate)

Aggiorna i metadati per la vista non associata a schema specificata. I metadati persistenti di una vista possono diventare obsoleti in seguito alla modifica degli oggetti sottostanti su cui è basata la vista.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

  
sp_refreshview [ @viewname = ] 'viewname'   

Argomenti

[ @viewname = ] 'viewname' Nome della vista. viewName è di tipo nvarchar e non prevede alcun valore predefinito. viewName può essere un identificatore multipart, ma può fare riferimento solo alle viste nel database corrente.

Valori del codice restituito

0 (esito positivo) o un numero diverso da zero (esito negativo)

Commenti

Se una vista non viene creata con l'oggetto schema, è necessario eseguire sp_refreshview quando vengono apportate modifiche agli oggetti sottostanti la vista che influiscono sulla definizione della vista. In caso contrario, le query sulla vista possono generare risultati imprevisti.

Autorizzazioni

Sono richieste l'autorizzazione ALTER per la vista e l'autorizzazione REFERENCES per i tipi CLR (Common Language Runtime) definiti dall'utente e le raccolte di XML Schema a cui fanno riferimento le colonne della vista.

Esempi

R. Aggiornamento dei metadati di una vista

Nell'esempio seguente vengono aggiornati i metadati della vista Sales.vIndividualCustomer.

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

B. Creazione di uno script con cui vengono aggiornate tutte le viste con dipendenze da un oggetto modificato

Si supponga che la tabella Person.Person sia stata modificata in modo da influire sulla definizione di qualsiasi vista creata in base a essa. Nell'esempio seguente viene creato uno script con cui vengono aggiornati i metadati di tutte le viste con una dipendenza dalla tabella 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');  

Vedere anche

Stored procedure di motore di database ()Transact-SQL
Stored procedure di sistema (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)
sp_refreshsqlmodule ()Transact-SQL