Aracılığıyla paylaş


sp_refreshview (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Belirtilen şemaya bağlı olmayan görünüm için meta verileri güncelleştirir. Görünümün bağlı olduğu temel nesnelerde yapılan değişiklikler nedeniyle bir görünümün kalıcı meta verileri eskiye gidebilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Tartışmalar

[ @viewname = ] 'viewname'

Görünümün adı. @viewnamenvarchar değeridir ve varsayılan değer yoktur. @viewname çok parçalı bir tanımlayıcı olabilir, ancak yalnızca geçerli veritabanındaki görünümlere başvurabilir.

Dönüş kodu değerleri

0 (başarı) veya sıfır olmayan bir sayı (başarısızlık).

Açıklamalar

SCHEMABINDING ile bir görünüm oluşturulmadıysa, sp_refreshview görünümün tanımını etkileyen, görünümün temel aldığı nesnelerde değişiklikler yapıldığında çalıştırılmalıdır. Aksi takdirde, sorgulandığında görünüm beklenmeyen sonuçlara neden olabilir.

İzinler

Görünümde ALTER izni ve görünüm sütunları tarafından başvurulan ortak dil çalışma zamanı (CLR) kullanıcı tanımlı türleri ve XML şema koleksiyonlarında BAŞVURUlar izni gerektirir.

Örnekler

A. Görünümün meta verilerini güncelleştirme

Aşağıdaki örnek, görünümü Sales.vIndividualCustomeriçin meta verileri yeniler.

USE AdventureWorks2022;
GO

EXECUTE sp_refreshview N'Sales.vIndividualCustomer';

B. Değiştirilen nesneye bağımlılıkları olan tüm görünümleri güncelleştiren bir betik oluşturma

Tablonun Person.Person , üzerinde oluşturulan görünümlerin tanımını etkileyecek şekilde değiştirildiğini varsayalım. Aşağıdaki örnek, tablosuna Person.Personbağımlılığı olan tüm görünümler için meta verileri yenileyen bir betik oluşturur.

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