sys.sp_refreshview (Transact-SQL)

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureEndpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft FabricDatabase SQL in Microsoft Fabric

La sys.sp_refreshview stored procedure di sistema aggiorna i metadati per la vista specificata non legata allo schema. 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

sys.sp_refreshview [ @viewname = ] N'viewname'
[ ; ]

Argomenti

[ @viewname = ] N'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 non crei una vista con SCHEMABINDING, esegui sp_refreshview quando apporti modifiche agli oggetti sottostanti alla vista che influenzano la definizione della vista. Altrimenti, la vista potrebbe restituire 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 utilizzano il AdventureWorks2025, AdventureWorksDW2025, o AdventureWorksLT2025 database di esempi, che puoi scaricare dal repository GitHub Azure Data SQL Samples Repository.

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

Supponiamo che la tabella Person.Person sia stata modificata in modo da influenzare la definizione di qualsiasi opinione su di essa. Il seguente esempio crea uno script che aggiorna i metadati di tutte le viste che dipendono 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');