Udostępnij za pośrednictwem


Za pomocą SQL Server Profiler, aby utworzyć i przetestować Plan prowadnic

Podczas tworzenia przewodnik planu można użyć SQL Server Profiler do przechwytywania tekst kwerendy dokładnie do użytku w statement_text argumentu sp_create_plan_guide procedura składowana.Pomaga upewnić się, że przewodnik planu zostaną dopasowane do kwerendy czas kompilacji.Po utworzeniu przewodnik planu SQL Server Profiler może również testować, że przewodnik planu są, w fakt, są dopasowywane do kwerendy.Ogólnie, plan guides należy przetestować przy użyciu SQL Server Profiler zweryfikować, że kwerenda jest filtrowanego przewodnik planu.

Przechwytywanie tekstu kwerendy za pomocą SQL Server Profiler

Jeśli uruchomienie kwerendy i Przechwyć tekst dokładnie tak, jak została przedłożona do SQL Server za pomocą SQL Server Profiler, można utworzyć przewodnik planu typu SQL lub szablon, który będzie dokładnie dopasować tekst kwerendy.Dzięki temu pewność, że przewodnik planu jest używany przez optymalizator kwerendy.

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

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

Załóżmy, że chcesz wykonać za pomocą operacji łączyć seryjnej tej kwerendy, ale SHOWPLAN wskazuje, że kwerenda nie używa łączyć korespondencji seryjnej.Nie można zmienić kwerendę bezpośrednio w aplikacji, więc zamiast tworzenia przewodnik planu do określenia, że wskazówka dotycząca kwerendy MERGE JOIN dołączone do kwerendy czas kompilacji.

Przechwytywanie tekstu kwerendy dokładnie jako SQL Server odbiera, wykonaj następujące kroki:

  1. Uruchom SQL Server Profiler śledzenia, upewniając się, że SQL: BatchStarting wybrany typ zdarzenie.

  2. Mieć aplikacji, uruchom kwerendę.

  3. Wstrzymaj SQL Server Profiler śledzenia.

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

  5. Kliknij prawym przyciskiem myszy i wybierz Wyodrębnij dane zdarzenie.

    Ważna informacjaWażne:

    Nie próbuj skopiować tekst partia, wybierając go w dolnym okienku okna śledzenia programu Profiler.Może to spowodować przewodnik planu, tworzona jest niezgodne z partia oryginalnej.

  6. Zapisz zdarzenie danych do pliku.Jest to tekst partia.

  7. Otwórz partia tekstu plik w Notatniku i skopiować tekst do kopii i wkleić buforu.

  8. Tworzenie przewodnik planu i Wklej skopiowany tekst wewnątrz cudzysłowów (") określone dla @ stmt argumentu.Musi escape wszelkie znaki pojedynczego cudzysłowu w @ stmt argument, poprzedzając je z innego pojedynczego cudzysłowu.Nie można dodać lub usunąć innych znaków podczas wstawiania te znaki pojedynczego cudzysłowu.Na przykład literałem data '20000101' musi być rozdzielany jako "20000101".

Oto przewodnik planu:

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 Plan Guides za pomocą SQL Server Profiler

Aby zweryfikować, że jest filtrowanego przewodnik planu do kwerendy, wykonaj następujące kroki:

  1. Uruchom SQL Server Profiler śledzenia co niektórych showplan xml wybrany typ zdarzenie (znajdujące się w wydajności węzła).

  2. Mieć aplikacji, uruchom kwerendę.

  3. Wstrzymaj SQL Server Profiler śledzenia.

  4. Znajdź showplan xml zdarzenie dla dotkniętych kwerendy.

  5. Jeśli typ obiektu lub SQL jest przewodnik planu, sprawdź, czy showplan xml zawiera zdarzenie PlanGuideDB i PlanGuideName atrybuty przewodnik planu oczekiwany jest zgodna z kwerendą.Lub w przypadek podręcznika plan szablonu sprawdź, czy showplan xml zawiera zdarzenie TemplatePlanGuideDB i TemplatePlanGuideName atrybuty oczekiwane przewodnik planu.Sprawdza, czy działa przewodnik planu.Te atrybuty są zawarte w <StmtSimple> elementu planu.