Bagikan melalui


sp_refreshview (T-SQL)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Memperbarui metadata untuk tampilan yang tidak terikat skema yang ditentukan. Metadata persisten untuk tampilan dapat menjadi kedaluarsa karena perubahan pada objek yang mendasar di mana tampilan bergantung.

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

[ @viewname = ] 'nama tampilan'

Nama tampilan. @viewname adalah nvarchar, tanpa default. @viewname bisa menjadi pengidentifikasi multibagian, tetapi hanya dapat merujuk ke tampilan dalam database saat ini.

Mengembalikan nilai kode

0 (berhasil) atau angka bukan nol (kegagalan).

Keterangan

Jika tampilan tidak dibuat dengan SCHEMABINDING, sp_refreshview harus dijalankan saat perubahan dilakukan pada objek yang mendasari tampilan, yang memengaruhi definisi tampilan. Jika tidak, tampilan mungkin menghasilkan hasil yang tidak terduga saat dikueri.

Izin

Memerlukan izin ALTER pada tampilan dan izin REFERENSI pada jenis yang ditentukan pengguna common language runtime (CLR) dan koleksi skema XML yang direferensikan oleh kolom tampilan.

Contoh

J. Memperbarui metadata tampilan

Contoh berikut me-refresh metadata untuk tampilan Sales.vIndividualCustomer.

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Membuat skrip yang memperbarui semua tampilan yang memiliki dependensi pada objek yang diubah

Asumsikan bahwa tabel Person.Person diubah dengan cara yang akan memengaruhi definisi tampilan apa pun yang dibuat di atasnya. Contoh berikut membuat skrip yang me-refresh metadata untuk semua tampilan yang memiliki dependensi pada tabel Person.Person.

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