Udostępnij za pośrednictwem


Using SQL Server Profiler to Create and Test Plan Guides

W przypadku tworzenia plan wykonania kwerendy, można użyć SQL Server Profiler Aby przechwycić tekst dokładnie kwerendy do użycia w statement_text argument sp_create_plan_guide procedura przechowywana.W ten sposób, upewnij się, że dopasowywane do kwerendy czas kompilacji plan wykonania kwerendy.Przewodnik jest tworzony po plan wykonania kwerendy, SQL Server Profiler można również przetestować plan wykonania kwerendy w rzeczywistości są dopasowywane do kwerendy. Ogólnie rzecz biorąc należy przetestować prowadnic plan wykonania kwerendy przy użyciu SQL Server Profiler Aby sprawdzić, czy kwerenda jest filtrowanego poradnik plan wykonania kwerendy.

Przechwytywanie tekstu kwerendy przy użyciu programu SQL Server Profiler

Jeśli podczas wykonywania kwerendy Przechwyć tekst dokładnie tak samo, jak zostało przesłane do SQL Server za pomocą SQL Server Profiler, można utworzyć plan wykonania kwerendy typu SQL lub TEMPLATE tekst kwerendy będą dokładnie zgodne. Dzięki temu pewność, że plan wykonania kwerendy jest używany przez optymalizator kwerendy.

Rozważmy następującą kwerendę przesłany przez aplikację jako zadanie partia autonomicznych:

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

Załóżmy, że mają tę kwerendę do wykonać przy użyciu operacji przyłączania do korespondencji seryjnej, ale plan wykonać wskazuje, że kwerenda nie używa łączyć korespondencji seryjnej.Nie można zmienić kwerendę bezpośrednio w aplikacji, zamiast tworzyć plan prowadnicę do określenia, czy wskazówki dotyczącej kwerendy MERGE łączyć można dołączyć do kwerendy czas kompilacji.

Aby przechwycić tekst kwerendy dokładnie tak jak SQL Server odbiera, wykonaj następujące kroki:

  1. Uruchom SQL Server Profiler śledzenie, upewniając się, że SQL:BatchStarting typ zdarzenie jest zaznaczone.

  2. Mieć aplikacji, uruchom kwerendę.

  3. Wstrzymaj SQL Server Profiler Śledzenie.

  4. Kliknij przycisk SQL:BatchStarting zdarzenie, które odpowiada na kwerendę.

  5. Kliknij prawym przyciskiem myszy i wybierz Wyodrębnianie zdarzenie danych.

    Important noteImportant Note:

    Nie należy próbować skopiować partia tekstu przez wybranie go w dolnym okienku okna śledzenia programu Profiler.Może to spowodować, że plan wykonania kwerendy wykonania kwerendy, tworzone jest niezgodne z oryginalnym partia.

  6. Zapisz dane zdarzeń w pliku.Jest to tekst, partia.

  7. Otwórz plik wsadowy tekst w Notatniku i skopiować tekst z kopią i Wklej buforu.

  8. Create the plan wykonania kwerendy and paste the copied text inside the quotation marks ('') specified for the @stmt argument.Należy wyjść wszelkie znaki pojedynczego cudzysłowu w @ stmt argument przez poprzedzający je z innego pojedynczy znak cudzysłowu.Należy uważać, aby nie dodawać lub usuwać innych znaków podczas wstawiania te znaki pojedynczego cudzysłowu.For example, the data literal '20000101' must be delimited as ''20000101''.

Oto plan wykonania kwerendy:

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

Testowanie przy użyciu programu SQL Server Profiler prowadnice plan

Aby zweryfikować, że plan wykonania kwerendy jest są dopasowane do kwerendy, wykonaj następujące kroki:

  1. Uruchom SQL Server Profiler Śledzenie wprowadzeniem niektórych, plan wykonania XML Po wybraniu (znajdujący się w obszarze zdarzenie typuWydajność node).

  2. Mieć aplikacji, uruchom kwerendę.

  3. Wstrzymaj SQL Server Profiler Śledzenie.

  4. Znajdowanie plan wykonania XML zdarzenie dla kwerendy, których dotyczy problem.

  5. Jeśli plan wykonania kwerendy jest typu OBJECT lub SQL, sprawdź, czy plan wykonania XML zdarzenie zawiera PlanGuideDB and PlanGuideName atrybuty Podręcznik plan wykonania kwerendy, której oczekiwano do kwerendy.Lub, w odniesieniu do prowadnicy plan wykonania kwerendy TEMPLATE, sprawdź, czy plan wykonania XML zdarzenie zawiera TemplatePlanGuideDB and TemplatePlanGuideName atrybutów dla oczekiwanego plan wykonania kwerendy.Pozwoli to sprawdzić, czy działa plan wykonania kwerendy.Atrybuty te znajdują się w obszarze <StmtSimple> Element planu.