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.
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');