Aracılığıyla paylaş


Plan kılavuzları oluşturmak ve test etmek için SQL Server Profiler kullanma

Şunlar için geçerlidir:SQL ServerAzure 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:

  1. SQL :BatchStarting olay türünün seçili olduğundan emin olarak bir SQL Server Profiler izlemesi başlatın.

  2. Uygulamanın sorguyu çalıştırmasını sağlayın.

  3. SQL Server Profiler İzlemesini duraklatın.

  4. Sorguya karşılık gelen SQL:BatchStarting olayına tıklayın.

  5. 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.

  6. Olay verilerini bir dosyaya kaydedin. Bu toplu metindir.

  7. Toplu iş metin dosyasını Not Defteri'nde açın ve metni kopyalama ve yapıştırma arabelleğine kopyalayın.

  8. 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:

  1. 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.

  2. Uygulamanın sorguyu çalıştırmasını sağlayın.

  3. SQL Server Profiler İzlemesini duraklatın.

  4. Etkilenen sorgu için Showplan XML olayını bulun.

    Uyarı

    Sorgu Derleme için Showplan XML olayı kullanılamaz. PlanGuideDB bu olayda yok.

  5. 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.

Ayrıca Bkz.

sp_create_plan_guide (Transact-SQL)