Aracılığıyla paylaş


Saklı yordamları yeniden derlenerek

Dizinler ekleme veya dizinlenmiş sütunlardaki veriler değiştirme gibi işlemleri tarafından değiştirildiği gibi kendi tabloları erişmek için kullanılan özgün sorgu planları yeniden derlenmesine tarafından optimize edilmelidir.Bu iyileştirme, otomatik olarak ilk ortaya saat saklı yordam çalıştırdıktan sonra SQL Server yeniden.Onu da saklı yordam değişiklikleri tarafından kullanılan temel bir temel alınan tablo ortaya çıkar.Ancak yeni bir dizin için saklı yordam yararlı eklenirse, kadar sonraki en iyi duruma getirme ortaya saat saklı yordam çalıştırıldıktan, SQL Server yeniden.Bu durumda, sonraki yeniden derlemek için saklı yordam zorlamak yararlı olabilir saat , yürütülen

Bir saklı yordam yeniden derlemek için zorlamak için başka bir sebep counteract için gerekli olduğunda "parametresi algılaması". saklı yordam derleme davranışı.Zaman SQL Server yürütür saklı yordamları yeniden derlediğinde, yordam tarafından kullanılan parametre değerlerini bir parçası olarak sorgu planı. üretme dahilBu değerler normal olanları temsil ediyorsa, hangi yordamı sonradan, daha sonra sorgu planından saklı yordam yararları denir ile her saat derler ve yürüten.Aksi takdirde, performans bozulabilir.

SQL Server 2008 R2 saklı yordamları deyim düzey yeniden derlemesinde bulunur.Zaman SQL Server 2008 R2 recompiles saklı yordamlar, yalnızca deyim neden yeniden derlemesinde derlenmiş, yerine tüm yordamı.Sonuç olarak, SQL Server recompiled varken parametre değerlerini kullandığı deyim bir sorgu planı. yeniden oluşturulurkenBu değerler, başlangıçta yordamına geçilen farklı.

Bir saklı yordam yeniden derlemek için zorlama

SQL Serverbir saklı yordam yeniden derlemek için zorlamak için üç yol sunar:

  • The sp_recompile system stored procedure forces a recompile of a stored procedure the next time that it is run.Bunu, mevcut planın sonraki oluşturulacak yeni bir plan zorlamak yordamı önbellekten silerek yapar saat , yordamı çalıştırın.

  • WITH seçeneği belirtir, tanımında bir saklı yordam oluşturma gösterir SQL Server ; Bu saklı yordam için bir plan önbellek saklı yordam çekirdekler her saat yürütülecek olan.Saklı yordam parametreleri değerleri saklı yordam yürütmeler arasında geniş ölçüde farklılık ve farklı yürütme planları her saat oluşturulmasına neden çekerken WITH seçeneğini kullanın.Bu seçeneğin kullanılması, seyrek ve saklı yordam çekirdekler olduğundan daha yavaş yürütmek saklı yordam neden olan her saat yürütülecek olan.

    Yalnızca tek tek istiyorsanız, sorgular içinde saklı yordam, saklı yordamın yerine, çekirdekler için yeniden sorgu ipucu çekirdekler istediğiniz her sorgu içinde belirtin.Bu davranışını taklit eden SQL Serverın aksi belirtilmedikçe, bu bölümün önceki kısımlarında ancak yanında saklı yordamın geçerli parametre değerleri, yeniden sorgu ipucu da kullanarak, derleme saklı yordam içindeki tüm yerel değişkenlerin değerlerini kullanan deyim düzey yeniden derlemesinde davranışıbildirimi. Yalnızca alt küme küme küme kümesini ait sorguları atypical veya geçici değerleri kullanıldığında, bu seçeneği kullanın saklı yordam.Daha fazla bilgi için bkz: Sorgu İpucu (Transact-sql).

  • Saklı yordamı ile yeniden DERLEYİN belirterek çekirdekler zorlayabilirsiniz seçeneğini, yürütmek saklı yordam.Yalnızca sağlamış olursunuz parametresi atypical ise veya saklı yordam oluşturulduğu veri önemli ölçüde değişmişse, bu seçeneği kullanın.

    Not

    Saklı yordam tarafından başvurulan nesne silinmiş veya yeniden adlandırılmış saklı yordam çalıştırıldığında bir hata döndürülür.Ancak, aynı ada sahip bir nesne bir saklı yordamda başvurulan nesne geçiyorsa, saklı yordam yeniden oluşturulması gerek kalmadan yürütür.

Sonraki bir saklı yordam yeniden derlemek için saat , bunun çalışması