Condividi tramite


sp_refreshview (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureDatabase SQL in Microsoft Fabric

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 relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @viewname = ] 'nome visualizzato'

Il nome della visualizzazionre. @viewname è nvarchar, senza impostazione predefinita. @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 (errore).

Osservazioni:

Se una vista non viene creata con SCHEMABINDING, sp_refreshview dovrebbe essere eseguita quando vengono apportate modifiche agli oggetti sottostanti alla vista, il che influisce sulla definizione della vista. Altrimenti, la visualizzazione potrebbe produrre risultati inaspettati quando la interroghi.

Autorizzazioni

Richiede ALTER permesso sulla view, e REFERENCES permesso per i tipi definiti dall'utente e le collezioni di schema XML a riferimento per le colonne della vista in tempo di esecuzione (common language runtime) (CLR).

Esempi

Gli esempi di codice in questo articolo usano il database di esempio AdventureWorks2025 o AdventureWorksDW2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.

R. Aggiornare i metadati di una visualizzazione

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

USE AdventureWorks2025;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Creare uno script che aggiorna tutte le visualizzazioni 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 AdventureWorks2025;
GO

SELECT DISTINCT 'EXECUTE 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');