sp_refreshview (Transact-SQL)
Data aggiornamento: 14 aprile 2006
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.
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 in più parti ma può fare riferimento solo a viste del database corrente.
Osservazioni
Se una vista non viene creata con associazione a schema, è consigliabile eseguire sp_refreshview quando vengono apportate modifiche agli oggetti sottostanti alla 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 gli insiemi di schemi XML a cui fanno riferimento le colonne della vista.
Valori restituiti
0 (esito positivo) o un numero diverso da zero (esito negativo)
Cronologia delle modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|
Esempi
A. Aggiornamento dei metadati di una vista
Nell'esempio seguente vengono aggiornati i metadati della vista Sales.vIndividualCustomer
.
USE AdventureWorks;
GO
exec 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.Contact
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.Contact
.
USE AdventureWorks;
GO
SELECT DISTINCT 'EXEC sp_refreshview ''' + name + ''''
FROM sys.objects so INNER JOIN sys.sql_dependencies sd
ON so.object_id = sd.object_id
WHERE type = 'V'
AND sd.referenced_major_id = object_id('Person.Contact')
Vedere anche
Riferimento
Stored procedure del Motore di database (Transact-SQL)
Stored procedure di sistema (Transact-SQL)