Aracılığıyla paylaş


Oluşturmak ve sınamak için SQL Server Profiler'I kullanma planı kılavuzları

Bir plan Kılavuzu oluştururken, sen-ebilmek kullanma SQL Server Profilerkullanmak için tam sorgu metni yakalamak için statement_textbağımsız değişkeni sp_create_plan_guide saklı yordamı. Bu plan Kılavuzu sorguya derleme sırasında eşleşmiş emin olabilirsiniz. Plan Kılavuzu oluşturulduktan sonra SQL Server Profilerplan Kılavuzu aslında, sorgu için eşleşen sınamak için de kullanılabilir. Genellikle, planı kılavuzları kullanarak sınamalısınız SQL Server Profilersorgu planı Kılavuzu eşleşen doğrulamak için.

SQL Server Profiler'I kullanarak sorgu metin yakalama

Bir sorgu çalıştırıp tam için gönderildiği gibi metni yakalamak SQL Serverkullanarak SQL Server Profiler, bir plan Kılavuzu türü sql veya sorgu metni tam olarak eşleşen bir şablon oluşturabilirsiniz. Bu plan Kılavuzu sorgu en iyi duruma getiricisi tarafından kullanılır emin olmayı sağlar.

Tek başına bir toplu iş olarak bir uygulama tarafından gönderilen aşağıdaki sorgu 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';

Bir birleştirme birleştirme işlemi kullanarak yürütmek için bu sorguyu istediğiniz, ancak sorgu birleştirme birleştirme kullanarak değil showplan gösterir varsayalım. Bunun yerine birleştirme katıl sorgu ipucu sorgu derleme sırasında eklenecek belirlemek için bir plan kılavuz oluşturmak uygulama doğrudan sorguda değiştiremezsiniz.

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

  1. Başlangıç bir SQL Server Profilerizleme, emin, SQL: BatchStarting olay türü seçilir.

  2. Sorguyu çalıştırdığınızda uygulama vardır.

  3. Duraklama SQL Server Profileriz.

  4. Tıklayın SQL: BatchStarting sorgu için karşılık gelen bir olay.

  5. Sağ tıklayın ve seçin Olay veri Ayıkla.

    Önemli notÖnemli

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

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

  7. Toplu metin dosyasını Not Defteri'nde açın ve metni Kopyala Kopyala Yapıştır arabellek.

  8. Plan Kılavuzu oluşturun ve kopyalanmış metni tırnak işaretleri içine (") için belirtilen @ stmt bağımsız değişkeni. Herhangi bir tek tırnak işareti içine kaçmak gerekir @ stmt bunları bir tek tırnak işareti ile önceki tarafından bağımsız değişkeni. Eklemeyin veya bu tek tırnak işaretleri eklediğinizde diğer karakterleri kaldırmak için dikkatli olun. Örneğin, hazır bilgi Tarih '20000101' olarak sınırlandırılmış gerekir "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)';

SQL Server Profiler'I kullanarak planı kılavuzları test

Bir plan Kılavuzu sorguya eşleşen doğrulamak için şu adımları izleyin:

  1. Başlangıç bir SQL Server Profilerizleme, belirli yapma Showplan xml olay türü seçili (altında bulunan Performans düğümü).

  2. Sorguyu çalıştırdığınızda uygulama vardır.

  3. Duraklama SQL Server Profileriz.

  4. Bul Showplan xml olay etkilenen sorgu.

  5. Plan Kılavuzu türü nesne veya sql ise doğrulayın Showplan xml olayı içeren PlanGuideDB ve PlanGuideName öznitelikleri için sorgu eşleştirmek için beklenen plan Kılavuzu. Ya da, bir şablon plan Kılavuzu durumunda doğrulayın Showplan xml olayı içeren TemplatePlanGuideDB ve TemplatePlanGuideName beklenen plan Kılavuzu için öznitelikleri. Bu plan Kılavuzu çalıştığını doğrular. Bu öznitelikler altında bulunan <StmtSimple > öğesi planı.

Ayrıca bkz.

Başvuru

sp_create_plan_guide (Transact-sql)

Diğer Kaynaklar

Query Performance

Optimizing Queries in Deployed Applications with Plan Guides