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ı
Plan kılavuzu oluştururken SQL Server Profiler ile, sp_create_plan_guide saklı yordamının statement_text bağımsız değişkeninde kullanılmak üzere tam sorgu metnini yakalayabilirsiniz. Bu, plan kılavuzunun derleme zamanında sorguyla eşleştiğinden emin olmanıza yardımcı olur. Plan kılavuzu oluşturulduktan sonra SQL Server Profiler, plan kılavuzunun aslında sorguyla eşleştirildiğini test etmek için de kullanılabilir. Genellikle, sorgunuzun plan kılavuzunuzla eşleştirildiğini doğrulamak için SQL Server Profiler kullanarak plan kılavuzlarını test etmelisiniz.
SQL Server Profiler kullanarak sorgu metnini yakalama
Sql Server Profiler kullanarak bir sorgu çalıştırır ve metni SQL Server'a gönderildiği gibi yakalarsanız, SQL veya TEMPLATE türünde sorgu metniyle tam olarak eşleşecek bir plan kılavuzu oluşturabilirsiniz. Bu, plan kılavuzunun sorgu iyileştiricisi tarafından kullanılmasını sağlar.
Bir uygulama tarafından bağımsız bir toplu iş olarak gönderilen aşağıdaki sorguyu göz önünde bulundurun:
SELECT COUNT(*) AS c
FROM Sales.SalesOrderHeader AS h
INNER JOIN Sales.SalesOrderDetail AS d
ON h.SalesOrderID = d.SalesOrderID
WHERE h.OrderDate BETWEEN '20000101' and '20050101';
Bu sorgunun birleştirme eklemesi işlemi kullanılarak yürütülmesini istediğinizi, ancak SHOWPLAN'ın sorgunun birleştirme eklemesi kullanmadığını gösterdiğini varsayalım. Sorguyu doğrudan uygulamada değiştiremezsiniz, bu nedenle birleştirme birleştirme sorgu ipucunun derleme zamanında sorguya ekleneceğini belirtmek için bir plan kılavuzu oluşturursunuz.
Sql Server'ın aldığı sorgu metnini tam olarak yakalamak için şu adımları izleyin:
SQL :BatchStarting olay türünün seçili olduğundan emin olarak bir SQL Server Profiler izlemesi başlatın.
Uygulamanın sorguyu çalıştırmasını sağlayın.
SQL Server Profiler İzlemesini duraklatın.
Sorguya karşılık gelen SQL:BatchStarting olayına tıklayın.
Sağ tıklayın ve Olay Verilerini Ayıkla'yı seçin.
Önemli
Profiler izleme penceresinin alt bölmesinden seçip toplu işlem metnini kopyalamaya çalışmayın. Oluşturduğunuz plan kılavuzu, özgün işlem kümesi ile eşleşmeyebilir.
Olay verilerini bir dosyaya kaydedin. Bu toplu metindir.
Toplu iş metin dosyasını Not Defteri'nde açın ve metni kopyalama ve yapıştırma arabelleğine kopyalayın.
Plan kılavuzunu oluşturun ve kopyalanan metni @stmt bağımsız değişkeni için belirtilen tırnak işaretlerinin ('') içine yapıştırın. @stmt bağımsız değişkenindeki tek tırnak işaretlerini kaçırmalısınız; bunun için önlerine başka bir tek tırnak işareti koyun. Bu tek tırnak işaretlerini eklerken başka karakter eklememeye veya kaldırmamaya dikkat edin. Örneğin, '20000101' tarih değişmez değeri ''20000101'' olarak sınırlanmalıdır.
Plan kılavuzu şu şekildedir:
EXEC sp_create_plan_guide
@name = N'MyGuide1',
@stmt = N'<paste the text copied from the batch text file here>',
@type = N'SQL',
@module_or_batch = NULL,
@params = NULL,
@hints = N'OPTION (MERGE JOIN)';
SQL Server Profiler kullanarak plan kılavuzlarını test etme
Plan kılavuzunun sorguyla eşleştirildiğini doğrulamak için şu adımları izleyin:
Showplan XML olay türünün seçili olduğundan emin olarak (Performans düğümünde bulunur) bir SQL Server Profiler izlemesi başlatın.
Uygulamanın sorguyu çalıştırmasını sağlayın.
SQL Server Profiler İzlemesini duraklatın.
Etkilenen sorgu için Showplan XML olayını bulun.
Uyarı
Sorgu Derleme için Showplan XML olayı kullanılamaz. PlanGuideDB bu olayda yok.
Plan kılavuzu OBJECT veya SQL türündeyse, Showplan XML olayının sorguyla eşleşmesini beklediğiniz plan kılavuzu için PlanGuideDB ve PlanGuideName özniteliklerini içerdiğini doğrulayın. Veya ŞABLON planı kılavuzu söz konusu olduğunda , Showplan XML olayının beklenen plan kılavuzu için TemplatePlanGuideDB ve TemplatePlanGuideName özniteliklerini içerdiğini doğrulayın. Bu, plan kılavuzunun çalıştığını doğrular. Bu öznitelikler, planın StmtSimple< öğesi altında> yer alır.