Aracılığıyla paylaş


Oluşturma ve sınama için SQL Server Profiler'ı kullanarak kılavuzları planlanır.

Bir plan kılavuzu oluştururken kullanabileceğiniz SQL Server Profiler tam bir sorgu metnini kullanmak üzere yakalamak için statement_text bağımsız değişkeni sp_create_plan_guide saklı yordamını.Bu plan kılavuzu derleme zamanında sorguya eşleştirilirsiniz emin yardımcı olur.Plan sonra kılavuz oluşturulur SQL Server Profiler Ayrıca plan kılavuzu, sorgu için eşleşen olan, sınamak için kullanılır. Genellikle, planı kılavuzları kullanarak sınamanız gerekir SQL Server Profiler Sorgunuz planı kılavuzunuz eşleşen, doğrulamak için .

SQL Server Profiler'ı kullanarak, Query metin yakalama

Bir sorgu çalıştırmalısınız ve tam için gönderilmiş gibi metin yakalama SQL Server kullanarak SQL Server Profiler, SQL veya sorgu metni tam olarak eşleşen TEMPLATE türünde bir plan kılavuzu oluşturabilirsiniz. Plan kılavuzu sorgu iyileştiricisi tarafından kullanılan kesinleştirir.

Tek başına bir toplu iş olarak bir uygulama tarafından gönderilen sorgu aşağıdaki noktaları dikkate alın:

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 sorgu, bir birleştirmek birleştirmek işlemi kullanarak yürütmek istediğiniz, ancak sorgu birleştirmek birleştirmek kullanarak gösterim planı gösterir varsayalım.Böylece yerine birleştirmek birleştirmek sorgusu ipucu derleme zamanında sorguya eklenmesi belirtmek için bir plan kılavuzu oluşturduğunuz uygulama doğrudan sorguda değiştiremezsiniz.

Sorgu metni yakalamak için tam olarak SQL Server aldığı, şu adımları izleyin:

  1. Başlatılacak bir SQL Server Profiler izleme, sağlayarak, SQL:BatchStarting olay türü seçildi.

  2. Sorguyu çalıştırmak uygulama vardır.

  3. Pause SQL Server Profiler Izleme.

  4. Tıklatın SQL:BatchStarting olay sorguya karşılık gelir.

  5. Sağ tıklatma ve seçme Olay veri Ayıkla.

    Important noteImportant Note:

    Profiler izleme penceresinin alt bölmeden seçerek toplu iş iş metni kopyalamak çalışmayın.Bu, özgün toplu iş iş eşleştirmek için oluşturduğunuz plan kılavuzu neden olabilir.

  6. Olay verileri bir dosyaya kaydedin.Bu toplu iş iş metindir.

  7. toplu iş iş metin dosyasını Not Defteri'nde açın ve metni kopyaya kopyalayıp bir arabellek.

  8. Plan kılavuz oluşturmak ve kopyalanan metni tırnak işaretleri () içine yapıştırın.'') için belirtildi.@ stmt bağımsız değişkeni.Herhangi bir tek tırnak işareti içine çıkış gerekir @ stmt bunları başka bir tek tırnak işaretiyle önceki tarafından bağımsız değişkeni. Ekleyip bu tek tırnak işareti eklediğinizde, herhangi bir karakter silmemeye dikkat edin.Örneğin, hazır bilgi tarih ' 20000101**'** ayrılmış**''** 20000101**''**.

Plan kılavuzu aşağıdadır:

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)';

Plan kılavuzları, SQL Server Profiler'ı kullanarak sınama

Bir plan kılavuzu bir sorgu için eşleşen, doğrulamak için şu adımları izleyin:

  1. Başlatılacak bir SQL Server Profiler izleme, belirli yapma gösterim planı XML olay türünü (( altında bulunan seçiliPerformans node).

  2. Sorguyu çalıştırmak uygulama vardır.

  3. Pause SQL Server Profiler Izleme.

  4. Bul gösterim planı XML olay etkilenen sorgu.

  5. Plan kılavuzu OBJECT veya SQL tipinden ise, doğrulayın gösterim planı XML olay içerir.PlanGuideDB and PlanGuideName öznitelikleri için sorgu eşleştirmek için beklenen plan kılavuzu.Veya TEMPLATE plan kılavuzu durumunda, gösterim planı XML olayı içeriyorTemplatePlanGuideDB and TemplatePlanGuideName öznitelikleri için beklenen plan kılavuzu.Bu plan kılavuzu çalıştığını doğrular.Bu öznitelikler altında bulunan <StmtSimple> plan öğesi.