Aracılığıyla paylaş


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

Bir plan Kılavuzu oluştururken kullanabileceğiniz SQL Server Profiler kullanılmak üzere tam sorgu metni yakalamak için statement_text bağımsız değişkeni sp_create_plan_guide saklı yordam.Bu plan kılavuzu için sorgu derleme saat eşleşen emin olabilirsiniz.Plan Kılavuzu oluşturulduktan sonra SQL Server Profiler plan Kılavuzu, içinde olup olmadığını sınamak için de kullanılabilir olgu, sorgu. için eşleşenGenellikle, planı kılavuzları kullanarak sınamanız gerekir SQL Server Profiler doğrulamak, sorgunuzu eşleşen plan Kılavuzu.

sql Server Profiler'I kullanarak sorgu metin yakalama

Bir sorguyu çalıştırabilir ve tam olarak için gönderildiği gibi metin Yakala, SQL Server kullanarak 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 tarafından kullanılır emin olur sorgu iyileştiricisi.

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 >= '20000101' AND h.OrderDate <='20050101';

Bu sorguyu kullanarak birleştirmek birleştirmek işlemi yürütmek için istediğiniz, ancak showplan birleştirmek birleştirmek sorgusunu kullanarak olduğunu gösterir varsayalım.Bunun yerine, oluşturduğunuz sorguda doğrudan uygulama değiştirilemez bir plan kılavuzu birleştir birleştirme sorgu ipucu sorgu derleme saat eklenmesi belirtmek için.

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

  1. Start bir SQL Server Profiler dikkat ederek izleme, SQL: BatchStarting olay türü seçili.

  2. Sorgu Çalıştırma uygulaması vardır.

  3. Pause SQL Server Profiler izleme.

  4. ' I SQL: BatchStarting sorguyla ilişkili olay.

  5. Sağ tıklatın ve seçin Olay Veri Ayıkla.

    Önemli notÖnemli

    Profiler izleme penceresinin alt bölmeden seçerek toplu iş iş metni kopyalamak deneyin.Bu, özgün toplu iş iş eşleştirmeye oluşturduğunuz plan Kılavuzu'na 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 metin kopya kopyalayıp arabellek.

  8. Oluşturma plan kılavuzu 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çış gerekir @ stmt başka bir tek tırnak işareti ile bunları takip tarafından bağımsız değişkeni.Ekleyip, bu tek tırnak işaretleri eklediğinizde diğer karakterler dikkatli olun.Örneğin, tarih hazır bilgisi '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)';

Plan kılavuzları, sql Server Profiler'I kullanarak sınama

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

  1. Start bir SQL Server Profiler yaparken belirli izleme, showplan xml olay türü seçilmişse (altında bulunan Performans düğümü).

  2. Sorgu Çalıştırma uygulaması vardır.

  3. Pause SQL Server Profiler izleme.

  4. Bul showplan xml etkilenen sorgu olay.

  5. Plan Kılavuzu türü nesne veya sql ise, emin olun showplan xml olay içeren PlanGuideDB ve PlanGuideName sorgu eşleştirmek için beklenen plan kılavuzu için öznitelikleri.Veya, durum bir şablon plan Kılavuzu, emin olun 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ı.