Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft 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:
- Sorguya WITH RECOMPILE seçeneğini ekleyin, kod değişikliği gerektirir.
- Bu seçeneği bir plan rehberiyle uygulayın
WITH RECOMPILE. - Kod değişikliği yapmadan Sorgu Mağazası ipucu ile bu
WITH RECOMPILEseçeneği uygulayın. - Daha fazla bilgi için, parametre duyarlı plan problemleriyle sorguları çözme bölümünü inceleyebilirsiniz.
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
İlgili içerik
- PROCEDURE OLUŞTUR (Transact-SQL)
- TETİKLEYİCİ OLUŞTUR (Transact-SQL)
- Sistem saklı yordamları (Transact-SQL)
- SQL:StmtRecompile Event Class
- Depolanmış bir prosedürü yeniden derleyin