Aracılığıyla paylaş


sp_recompile (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Depolanan prosedürler, tetikleyiciler ve kullanıcı tanımlı fonksiyonların bir sonraki çalıştırıldığında yeniden derlenmesine neden olur. Bunu, prosedür önbelleğinden mevcut planı çıkararak yapar ve prosedür veya tetikleyici bir sonraki çalıştırıldığında yeni bir plan oluşturulmasını sağlar. Bir SQL Server Profiler koleksiyonunda, SP:CacheInsert olay yerine SP:Recompileolay kaydedilir.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_recompile [ @objname = ] N'object'
[ ; ]

Arguments

[ @objname = ] N'object'

Mevcut veritabanında saklanan bir prosedür, tetikleyici, tablo, görünüm veya kullanıcı tanımlı fonksiyonun nitelikli veya niteliksiz adı. @objnamenvarchar(776)'dır ve varsayılan yoktur.

  • Eğer @objname bir depolanmış prosedür, tetikleyici veya kullanıcı tanımlı fonksiyonun adı ise, saklanan prosedür, tetikleyici veya fonksiyon bir sonraki çalıştırıldığında yeniden derlenir.

  • Eğer @objname bir tablo veya görünümün adı ise, tabloya veya görünüme referans veren tüm depolanmış prosedürler, tetikleyiciler veya kullanıcı tanımlı fonksiyonlar bir sonraki çalıştırıldığında yeniden derlenir.

Dönüş kodu değerleri

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

Açıklamalar

sp_recompile sadece mevcut veritabanında bir nesne arar.

Depolanan prosedürler, tetikleyiciler ve kullanıcı tanımlı fonksiyonlar tarafından kullanılan sorgular, yalnızca derlendiklerinde optimize edilir. Veritabanında istatistikleri etkileyen indeksler veya diğer değişiklikler yapıldıkça, derlenmiş depolanmış prosedürler, tetikleyiciler ve kullanıcı tanımlı fonksiyonlar verimliliğini kaybedebilir. Bir tabloda etki eden depolanmış prosedürleri ve tetikleyicileri yeniden derleyerek sorguları yeniden optimize edebilirsiniz.

Bu depolanmış prosedürün proaktif uygulanması genellikle gereksizdir. SQL Server, avantajlı olduğunda depolanmış prosedürleri, tetikleyicileri ve kullanıcı tanımlı fonksiyonları otomatik olarak yeniden derler. Veritabanı motorunun nesneleri yeniden derlemeyi seçmesinin çeşitli nedenleri vardır. En yaygın olarak, otomatik yeniden derleme, otomatik veya manuel istatistiksel güncellemeler nedeniyle temel kardinalite tahminindeki değişiklikleri takip eder.

Her yürütmede bir depolanmış prosedürü yeniden derleme, parametrizasyondan kaynaklanan sorgu planı sorunlarıyla mücadele etmenin daha az verimli yollarından biridir. SQL Server 2022 (16.x)'de tanıtılan Parametre Duyarlı Planı optimizasyonu özelliği bu sorunu otomatik olarak azaltmaya çalışır. Önceki sürümlerde, her uygulamada çağrı sp_recompile yapmak yerine şöyle düşünün:

Permissions

Belirtilen nesne üzerinde ALTER izni gerektirir.

Örnekler

Aşağıdaki örnek, tabloda işlem gören kayıtlı prosedürler, tetikleyiciler ve kullanıcı tanımlı fonksiyonların Sales.Customer bir sonraki çalıştırıldığında yeniden derlenmesine neden olur.

USE AdventureWorks2022;
GO

EXECUTE sp_recompile N'Sales.Customer';
GO