Bagikan melalui


sp_refreshview (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

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 dapat menghasilkan hasil yang tidak terduga saat Anda mengkuerinya.

Izin

Memerlukan ALTER izin pada tampilan, dan REFERENCES izin pada jenis runtime bahasa umum (CLR) yang ditentukan pengguna dan kumpulan skema XML yang direferensikan kolom tampilan.

Contoh

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

J. Memperbarui metadata tampilan

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

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