Microsoft SQL Server 2008

Wykorzystanie narzędzia SQL Server Profiler Udostępnij na: Facebook

Opublikowano: 2 lipca 2008

SQL Server Profiler pokazuje, w jaki sposób SQL Server wewnętrznie rozwiązuje kwerendy. Dzięki temu administratorzy mogą zobaczyć, jakie dokładnie instrukcje Transact-SQL lub wyrażenia wielowymiarowe są wysyłane na serwer oraz w jaki sposób serwer uzyskuje dostęp do bazy danych lub modułu w celu pobrania zbiorów wynikowych.

Zawartość strony
 Szablony SQL Server Profiler  Szablony SQL Server Profiler
 Uprawnienia wymagane do uruchomienia narzędzia SQL Server Profiler  Uprawnienia wymagane do uruchomienia narzędzia SQL Server Profiler
Zapisywanie śladów i szablonów śledzenia  Zapisywanie śladów i szablonów śledzenia
 Zapisywanie szablonów śledzenia  Zapisywanie szablonów śledzenia
 Uruchamianie, wstrzymywanie i zatrzymywanie śladów  Uruchamianie, wstrzymywanie i zatrzymywanie śladów
Korelacja śladu z danymi dziennika wydajności systemu Windows  Korelacja śladu z danymi dziennika wydajności systemu Windows
Wyświetlanie i analizowanie śladów przy użyciu narzędzia SQL Server Profiler  Wyświetlanie i analizowanie śladów przy użyciu narzędzia SQL Server Profiler
Analizowanie zakleszczeń przy użyciu narzędzia SQL Server Profiler  Analizowanie zakleszczeń przy użyciu narzędzia SQL Server Profiler
Analizowanie kwerend przy użyciu wyników SHOWPLAN w SQL Server Profiler  Analizowanie kwerend przy użyciu wyników SHOWPLAN w SQL Server Profiler
Filtrowanie śladów przy użyciu narzędzia SQL Server Profiler  Filtrowanie śladów przy użyciu narzędzia SQL Server Profiler
 Odtwarzanie śladów  Odtwarzanie śladów
 Scenariusze wykorzystania narzędzia SQL Server Profiler  Scenariusze wykorzystania narzędzia SQL Server Profiler

Przy pomocy narzędzia SQL Server Profiler można zrealizować następujące czynności:

• Stworzyć ślad, który jest oparty na szablonie wielokrotnego użytku

• Obserwować wyniki śledzenia w czasie działania śladu

• Składować wyniki śledzenia w tabeli

• Uruchamiać, zatrzymywać, wstrzymywać i modyfikować wyniki śledzenia w zależności od potrzeb

• Odtwarzać wyniki śledzenia

Narzędzia SQL Server Profiler można użyć do monitorowania wybranych, znaczących zdarzeń. Jeśli ślady osiągają zbyt duże rozmiary, można filtrować je w oparciu o wybrane informacje, aby gromadzony był jedynie podzbiór danych zdarzeń. Monitorowanie zbyt wielu zdarzeń powoduje zwiększenie obciążenia serwera oraz procesu monitorowania i może powodować, że plik lub tabela śladu osiągnie bardzo duże rozmiary, w szczególności gdy proces monitorowania trwa długo.

Uwaga:

W SQL Server 2005 i wersjach późniejszych wartości kolumn śladu większe niż 1 GB powodują wygenerowanie błędu i są obcinane w danych wyjściowych śladu.

Artykuł omawia następujące zagadnienia:

TematOpisSzablony SQL Server ProfilerZawiera informacje o predefiniowanych szablonach śledzenia, które są dostarczane wraz z SQL Server Profiler.Uprawnienia wymagane do uruchomienia narzędzia SQL Server ProfilerZawiera informacje o uprawnieniach koniecznych do uruchomienia narzędzia SQL Server Profiler.Zapisywanie śladów i szablonów śledzeniaZawiera informacje o zapisywaniu danych wyjściowych śladu oraz o zapisywaniu definicji śledzenia w szablonie.Zapisywanie szablonów śledzeniaZawiera informacje o zapisywaniu szablonów śledzenia przy użyciu narzędzia SQL Server Profiler lub instrukcji Transact-SQL.Uruchamianie, wstrzymywanie i zatrzymywanie śladówZawiera informacje o tym, co dzieje się po uruchomieniu, wstrzymaniu lub zatrzymaniu śladu.Korelacja śladu z danymi dziennika wydajności systemu WindowsZawiera informacje o korelowaniu danych dziennika wydajności systemu Windows ze śladem przy użyciu narzędzia SQL Server Profiler.Wyświetlanie i analizowanie śladów przy użyciu narzędzia SQL Server ProfilerZawiera informacje o wykorzystaniu śladów do rozwiązywania problemów z danymi, wyświetlania nazw obiektów w śladzie oraz odnajdowania zdarzeń w śladzie.Analizowanie zakleszczeń przy użyciu narzędzia SQL Server ProfilerZawiera informacje o wykorzystaniu narzędzia SQL Server Profiler do identyfikowania przyczyny zakleszczenia.Analizowanie kwerend przy użyciu wyników SHOWPLAN w SQL Server ProfilerZawiera informacje o wykorzystaniu narzędzia SQL Server Profiler do zbierania i wyświetlania wyników Showplan oraz Showplan Statistics.Filtrowanie śladów przy użyciu narzędzia SQL Server ProfilerZawiera informacje o ustawianiu filtrów na kolumnach danych w celu filtrowania danych wyjściowych śladu przy użyciu narzędzia SQL Server Profiler.Odtwarzanie śladówZawiera informacje, które wyjaśniają, co to znaczy odtworzyć ślad i co jest konieczne do odtworzenia śladu.Scenariusze wykorzystania narzędzia SQL Server ProfilerZawiera opisy typowych scenariuszy, w których można wykorzystać narzędzie SQL Server Profiler do analizowania wydajności serwera SQL Server.  

Szablony SQL Server Profiler

SQL Server Profiler może posłużyć do tworzenia szablonów definiujących klasy zdarzeń oraz kolumny danych, które mają zostać umieszczone w śladach. Po zdefiniowaniu i zapisaniu szablonu, można uruchomić ślad, który zapisuje dane dla każdej, wybranej klasy zdarzenia. Ten sam szablon można wykorzystać w wielu śladach. Szablon sam w sobie nie może być wykonywany.

SQL Server Profiler oferuje predefiniowane szablony śledzenia ułatwiające konfigurowanie klas zdarzeń, które najprawdopodobniej będą potrzebne w określonych śladach. Na przykład szablon Standard pomaga w tworzenie uniwersalnego śladu do zapisywania informacji o operacjach logowania, wylogowania, ukończonych wsadach i połączeniu. Szablon ten można wykorzystać do uruchamianiu śladów bez modyfikacji lub jako punkt wyjścia dla dodatkowych szablonów z innymi konfiguracjami zdarzeń.

Uwaga:

Poza śladami bazującymi na predefiniowanych szablonach, SQL Server Profiler umożliwia również tworzenie śladów na podstawie szablonu pustego, który domyślnie nie zawiera żadnych klas zdarzeń. Zastosowanie szablonu pustego może okazać się przydatne, gdy planowany ślad nie przypomina konfiguracji żadnego z szablonów predefiniowanych.

SQL Server Profiler pozwala śledzić różne typy serwerów. Można na przykład śledzić SQL Server 2000, Analysis Services oraz SQL Server 2005 (i wersje późniejsze). Jednak klasy zdarzeń, które mogą zostać dołączone, nie są jednakowe dla wszystkich typów serwera. Z tego względu SQL Server Profiler zawiera różne szablony dla różnych serwerów i udostępnia wybrany szablon, odpowiadający określonemu typowi serwera.

Szablony predefiniowane

Poza szablonem Standard (domyślnym) SQL Server Profiler zawiera zestaw predefiniowanych szablonów służących do monitorowania określonych typów zdarzeń. Następująca tabela zawiera listę

predefiniowanych szablonów, ich zastosowań oraz klas zdarzeń, dla których przechwytują one informacje.

Nazwa szablonu Zastosowanie szablonu Klasy zdarzeń
SP_Counts Przechwytuje informacje o procesie wykonania procedury składowanej w czasie. SP:Starting
Standard Uniwersalny punkt wyjściowy do tworzenia śladu. Przechwytuje wszystkie procedury składowane oraz wsady Transact-SQL, które są uruchomione. Służy do monitorowania ogólnej aktywności serwera baz danych.

Audit Login

Audit Logout

ExistingConnection

RPC:Completed

SQL:BatchCompleted

SQL:BatchStarting

TSQL Przechwytuje wszystkie instrukcje Transact-SQL przesyłane na SQL Server przez aplikacje klienckie oraz czas ich wywołania. Służy do debugowania aplikacji klienckich.

Audit Login

Audit Logout

ExistingConnection

RPC:Starting

SQL:BatchStarting

TSQL_Duration Przechwytuje wszystkie instrukcje Transact-SQL przesyłane na SQL Server przez aplikacje klienckie oraz ich czas wykonania (w milisekundach), grupuje je według czasu trwania. Służy do identyfikowania długo wykonujących się kwerend.

RPC:Completed

SQL:BatchCompleted

TSQL_Grouped Przechwytuje wszystkie instrukcje Transact-SQL przesyłane na SQL Server oraz czas, kiedy zostały one wywołane. Grupuje informacje według użytkowników lub aplikacji klienckich, które nadesłały instrukcje. Służy do sprawdzania kwerend wywoływanych przez wybraną aplikację kliencką lub użytkownika.

Audit Login

Audit Logout

ExistingConnection

RPC:Starting

SQL:BatchStarting

TSQL_Replay Przechwytuje szczegółowe informacje o instrukcjach Transact-SQL, które są wymagane, jeśli ślad ma zostać odtworzony. Służy do wykonywania iteracyjnych dostrojeń, takich jak testowanie wydajności.

CursorClose

CursorExecute

CursorOpen

CursorPrepare

CursorUnprepare

Audit Login

Audit Logout

Existing Connection

RPC Output parameter

RPC:Completed

RPC:Starting

Exec Prepared SQL

Prepare SQL

SQL:BatchCompleted

SQL:BatchStarting

TSQL_SPs Przechwytuje szczegółowe informacje o wszystkich wykonywanych procedurach składowanych. Służy do analizowania poszczególnych etapów wykonania tych procedur. Należy dodać zdarzenie SP:Recompile, gdy podejrzewa się, że procedury są ponownie kompilowane.

Audit Login

Audit Logout

ExistingConnection

RPC:Starting

SP:Completed

SP:Starting

SP:StmtStarting

SQL:BatchStarting

Tuning Przechwytuje informacje o wykonywaniu procedur składowanych oraz wsadów Transact-SQL. Służy do produkowania danych wyjściowych śladu, które Database Engine Tuning Advisor może wykorzystać jako obciążenie robocze do dostrajania baz danych.

RPC:Completed

SP:StmtCompleted

SQL:BatchCompleted

Szablon domyślny

SQL Server Profiler automatycznie wyznacza szablon Standard jako domyślny szablon stosowany dla każdego nowego śladu. Jednak szablon domyślny można zmienić na dowolny inny szablon predefiniowany lub definiowany przez użytkownika. Aby zmienić szablon domyślny, należy zaznaczyć pole wyboru Use as a default template for selected server type podczas tworzenia lub edycji szablonu przy użyciu karty General w oknie dialogowym Trace Template Properties.

Aby przejść do okna dialogowego Trace Template Properties , w narzędziu SQL Server Profiler w menu File należy wybrać opcję Templates, a następnie kliknąć opcję New Template lub Edit Template .

Uwaga:

Domyślny szablon jest charakterystyczny dla danego typu serwera. Zmiana domyślnych ustawień dla jednego typu serwera nie wpływa na szablon domyślny dla innych typów serwera.

 Do początku strony Do początku strony

Uprawnienia wymagane do uruchomienia narzędzia SQL Server Profiler

Domyślnie do uruchomienia narzędzia SQL Server Profiler potrzebne są te same uprawnienia użytkownika, jakie potrzebne są do wykonywania procedur składowanych Transact-SQL służących do tworzenia śladów. Aby uruchomić narzędzie SQL Server Profiler, użytkownicy muszą posiadać uprawnienie ALTER TRACE.

Uprawnienia potrzebne do odtwarzania śladów

Odtwarzanie śladów również wymaga, aby użytkownik odtwarzający ślad posiadał uprawnienie ALTER TRACE.

Jednak jeśli w odtwarzanym śladzie występuje zdarzenie Audit Login, podczas jego odtwarzania SQL Server Profiler wykorzystuje polecenie EXECUTE AS. Polecenie EXECUTE AS służy do personifikowania użytkownika, który jest powiązany ze zdarzeniem logowania.

Jeśli SQL Server Profiler napotyka w odtwarzanym śladzie zdarzenie logowania, przeprowadzone zostają następujące kontrole uprawnień:

1. User1, który posiada uprawnienie ALTER TRACE, rozpoczyna odtwarzanie śladu.

2. W odtwarzanym śladzie następuje zdarzenie logowania dla User2.

3. SQL Server Profiler wykorzystuje polecenie EXECUTE AS do personifikacji User2.

4. SQL Server usiłuje uwierzytelnić użytkownika User2 i w zależności od efektów pojawia się jedno z następujących zdarzeń:

a. Jeśli User2 nie może zostać uwierzytelniony, SQL Server Profiler zwraca błąd i kontynuuje odtwarzanie śladu w kontekście User1.

b. Jeśli User2 zostaje pomyślnie uwierzytelniony, kontynuowane jest odtwarzanie śladu w kontekście User2.

5. W docelowej bazie danych sprawdzane są uprawnienia dla użytkownika User2 i w zależności od efektów pojawia się jedno z następujących zdarzeń:

a. Jeśli User2 posiada uprawnienia w docelowej bazie danych, personifikacja została zakończona sukcesem i ślad jest odtwarzany w kontekście użytkownika User2.

b. Jeśli User2 nie posiada uprawnień w docelowej bazie danych, serwer sprawdza, czy w bazie tej istnieje konto użytkownika Guest.

6. Sprawdzana jest obecność użytkownika Guest w docelowej bazie danych i w zależności od efektów pojawia się jedno z następujących zdarzeń:

a. Jeśli konto Guest istnieje, ślad jest odtwarzany przy użyciu konta Guest.

b. Jeśli żadne konto Guest nie istnieje w docelowej bazie danych, zwracany jest błąd i ślad jest odtwarzany w kontekście User1.

Następujący diagram ilustruje opisany proces sprawdzania uprawnień podczas odtwarzania śladów:

Diagram 1.

 Do początku strony Do początku strony

Zapisywanie śladów i szablonów śledzenia

Ważne jest podkreślenie różnicy pomiędzy zapisywaniem plików śladu a zapisywaniem szablonów śledzenia. Zapisywanie pliku śladu wiąże się z zapisywaniem w określonym miejscu przechwyconych danych zdarzeń. Natomiast zapisywanie szablonów śledzenia oznacza zachowywanie definicji śledzenia tzn. określonych kolumn danych, klas zdarzeń lub filtrów.

Zapisywanie śladów

Przechwycone dane zdarzeń należy zapisywać w pliku lub tabeli SQL Server, gdy istnieje potrzeba analizowania lub odtwarzania tych danych w przyszłości. Mają one następujące zastosowania:

• Plik śladu lub tabela śladu mogą posłużyć do tworzenia obciążenia roboczego, które jest wykorzystywane w roli danych wejściowych narzędzia Database Engine Tuning Advisor.

• Plik śladu można wykorzystać do przechwytywania zdarzeń i wysyłania pliku śladu do dostawcy wsparcia technicznego w celu dokonania analiz.

• Narzędzia przetwarzania kwerend w SQL Server można wykorzystać do uzyskiwania dostępu do danych lub wyświetlania danych w narzędziu SQL Server Profiler. Tylko członkowie stałej roli serwerowej sysadmin i twórca tabeli mogą uzyskiwać bezpośredni dostęp do tabeli śladu.

Uwaga:

Przechwytywanie danych śladu do tabeli stanowi wolniejszą operację niż przechwytywanie danych śladu do pliku. Alternatywą jest przechwycenie danych do pliku, otworzenie pliku, a następnie zapisanie śladu w postaci tabeli śladu.

Gdy wykorzystywany jest plik śladu, SQL Server Profiler zapisuje przechwycone dane zdarzeń (nie definicje śledzenia) w pliku SQL Server Profiler Trace (*.trc). Rozszerzenie to jest dodawane na końcu pliku śladu automatycznie podczas jego zapisywania, niezależnie od innych określonych rozszerzeń. Na przykład jeśli określony zostanie plik śladu o nazwie Trace.dat , stworzony plik będzie nosił nazwę Trace.dat.trc.

Zapisywanie szablonów

Definicja szablonu śledzenia zawiera klasy zdarzeń, kolumny danych, filtry oraz wszystkie pozostałe właściwości (za wyjątkiem przechwyconych danych zdarzeń), które są wykorzystywane do tworzenia śladu. SQL Server Profiler dostarcza predefiniowane szablony systemowe służące do realizacji typowych zadań śledzenia, takich jak tworzenie obciążenia roboczego, które narzędzie Database Engine Tuning Advisor może wykorzystać do dostrojenia fizycznego projektu bazy danych. Istnieje również możliwość tworzenia i zapisywania szablonów definiowanych przez użytkownika.

Importowanie oraz eksportowanie szablonów

SQL Server Profiler umożliwia importowanie i eksportowanie szablonów z jednego serwera na drugi. Eksportowanie szablonu wiąże się w przeniesieniem kopii istniejącego szablonu do określonego katalogu. Importowanie szablonu wiąże się w wykonaniem kopii określonego szablonu. Gdy szablony są wyświetlone w narzędziu SQL Server Profiler, można odróżnić je od szablonów systemowych dzięki wyrażeniu "(user)", które następuje po nazwie szablonu. Predefiniowanych szablonów systemowych nie można nadpisywać ani bezpośrednio modyfikować.

Analizowanie wydajności przy użyciu szablonów

W przypadku częstego monitorowania serwera SQL Server warto użyć szablonów do analizowania wydajności. Szablony przechwytują za każdym razem te same dane zdarzeń i do ich monitorowania wykorzystują tę samą definicję śledzenia. Nie trzeba definiować klas zdarzeń i kolumn danych za każdym razem, gdy tworzy się ślad. Ponadto szablon może zostać przekazany innemu użytkownikowi, aby on także mógł monitorować określone zdarzenia SQL Server. Na przykład dostawca wsparcia technicznego może przekazać klientowi szablon, który klient wykorzystywać będzie do przechwytywania wymaganych danych zdarzeń. Następnie na podstawie odesłanych danych dostawca wsparcia technicznego może dokonywać analiz.

 Do początku strony Do początku strony

Zapisywanie szablonów śledzenia

Można modyfikować szablony zapisane w plikach na lokalnym komputerze, na którym uruchomiony jest SQL Server Profiler. Można również modyfikować szablony bazujące na tych plikach. Modyfikując istniejące szablony, dokonuje się edycji właściwości szablonów, takich jak klasy zdarzeń oraz kolumny danych w takiej samej kolejności, w jakiej właściwości te zostały oryginalnie ustawione na karcie Events Selection w oknie dialogowym Trace Properties. Klasy zdarzeń oraz kolumny danych mogą być

dodawane lub usuwane, a filtry mogą być poddawane zmianom. Po zmodyfikowania szablonu tworzony jest szablon zdefiniowany przez użytkownika, a oryginalny szablon systemowy pozostaje nienaruszony.

Czasem może pojawić się potrzeba stworzenia szablonu na podstawie istniejącego pliku śladu, gdy nie pamięta się (lub nie zapisało) oryginalnego szablonu, który posłużył do stworzenia śladu lub gdy chce się uruchomić ten sam ślad w późniejszym czasie. Pracując z istniejącymi śladami, można wyświetlać właściwości, ale nie można modyfikować właściwości. Aby zmodyfikować właściwości, trzeba zatrzymać lub wstrzymać ślad.

Aby stworzyć szablon śledzenia

How to: Create a Trace Template (SQL Server Profiler)

Aby uruchomić ślad na podstawie szablonu śledzenia

How to: Create a Trace (SQL Server Profiler)

Aby zmodyfikować szablon śledzenia

Wykorzystanie narzędzia SQL Server Profiler

Using Transact-SQL

Aby dodać lub usunąć zdarzenia z szablonu śledzenia lub pliku śladu

Wykorzystanie narzędzia SQL Server Profiler

Using Transact-SQL

 Do początku strony Do początku strony

Uruchamianie, wstrzymywanie i zatrzymywanie śladów

Po zdefiniowaniu nowego śladu lub stworzeniu szablonu przy użyciu SQL Server Profiler można uruchomić, wstrzymać lub zatrzymać przechwytywanie danych przy pomocy nowej definicji lub szablonu śledzenia.

Uruchamianie śladu

Gdy ślad zostaje uruchomiony, a zdefiniowanym źródłem jest instancja silnika baz danych SQL Server lub usługi Analysis Services, SQL Server tworzy kolejkę, która stanowi tymczasowe miejsce przetrzymywania przechwyconych zdarzeń serwera.

Jeśli dostęp do SQL Trace uzyskuje się przy pomocy narzędzia SQL Server Profiler, po uruchomieniu śladu otwiera się nowe okno (o ile nie jest ono już otwarte) i dane są natychmiastowo przechwytywane.

Natomiast jeśli dostęp do SQL Trace uzyskuje się przy pomocy systemowych procedur składowanych Transact-SQL, trzeba uruchamiać ślad za każdym razem, gdy uruchamiana jest instancja SQL Server, aby dane były przechwytywane. Po uruchomieniu śladu można zmodyfikować jedynie jego nazwę śladu.

Uwaga:

Gdy pracuje się z istniejącymi śladami, można wyświetlać właściwości, ale nie można ich modyfikować. Aby modyfikować właściwości, trzeba zatrzymać lub wstrzymać ślad.

Wstrzymywanie śladu

Wstrzymanie śladu powoduje, że dane zdarzeń nie są przechwytywane aż do momentu ponownego uruchomienia śladu. Ponowne uruchomienie śladu umożliwia wznowienie operacji śledzenia. Restart nie

powoduje utraty żadnych uprzednio przechwyconych danych. Gdy ślad jest ponownie uruchamiany, proces przechwytywania danych jest wznawiany od danego momentu naprzód. W czasie gdy ślad jest wstrzymany, można zmodyfikować nazwę, zdarzenia, kolumny oraz filtry. Jednak nie można zmienić lokalizacji docelowych, do których wysyłane są dane śledzenia ani zmodyfikować połączenia z serwerem.

Zatrzymywanie śladu

Zatrzymanie śladu powoduje, że dane przestają być przechwytywane. Po zatrzymaniu ślad nie może być uruchomiony ponownie bez utraty uprzednio przechwyconych danych, o ile dane nie zostały przechowane w pliku lub tablicy śladu. Można również zapisać zebrane dane w tabeli lub pliku po zatrzymaniu śladu. Wszystkie właściwości śladu, które zostały wcześniej wybrane, zostają zachowane po zatrzymaniu śladu. Gdy ślad jest zatrzymany, można zmienić nazwę, zdarzenia, kolumny oraz filtry.

 Do początku strony Do początku strony

Korelacja śladu z danymi dziennika wydajności systemu Windows

Wykorzystując narzędzie SQL Server Profiler, można otworzyć dziennik wydajności systemu Windows, wybrać liczniki, które mają zostać skorelowane ze śladem i wyświetlić wybrane liczniki wydajności wraz ze śladem w graficznym interfejsie użytkownika SQL Server Profiler. Po wybraniu zdarzenia w oknie śledzenia pionowy, czerwony słupek w panelu danych System Monitor w narzędziu SQL Server Profiler wskazywać będzie dane dziennika wydajności skorelowane z wybranym zdarzeniem śladu.

Aby skorelować ślad z licznikami wydajności, należy otworzyć plik lub tabelę śledzenia, która zawiera kolumny danych StartTime oraz EndTime, a następnie kliknąć opcję Import Performance Data w menu File narzędzia SQL Server Profiler. Później można otworzyć dziennik wydajności i wybrać obiekty oraz liczniki monitora systemu, które mają zostać skorelowane ze śladem.

 Do początku strony Do początku strony

Wyświetlanie i analizowanie śladów przy użyciu narzędzia SQL Server Profiler

SQL Server Profiler może posłużyć do wyświetlania przechwyconych w śladzie danych zdarzeń. SQL Server Profiler prezentuje dane w oparciu o zdefiniowane właściwości śladu. Jeden ze sposobów analizowania danych SQL Server polega na skopiowaniu danych do innego programu, takiego jak SQL Server lub Database Engine Tuning Advisor. Database Engine Tuning Advisor może wykorzystywać plik śladu, który zawiera wsad SQL oraz zdarzenia zdalnego wywoływania procedur (RPC), jeśli do śladu jest dołączona kolumna danych Text Aby upewnić się, że przechwytywane są odpowiednie zdarzenia i kolumny, które mają zostać wykorzystane w narzędziu Database Engine Tuning Advisor, należy użyć predefiniowanego szablonu Tuning dostarczanego wraz z narzędziem SQL Server Profiler.

Gdy ślad jest otwierany przy użyciu narzędzia SQL Server Profiler, plik śladu nie musi posiadać rozszerzenia .trc, o ile został on stworzony przy użyciu narzędzia SQL Server Profiler lub systemowych procedur składowanych SQL Trace.

Uwaga:

SQL Server Profiler może również odczytywać pliki SQL Trace .log oraz uniwersalne pliki skryptów SQL. Otwierając plik SQL Trace, który nie posiada rozszerzenia pliku .log (np. trace.txt), należy określić SQLTrace_Log jako format pliku.

Można konfigurować format wyświetlania daty i czasu w narzędziu SQL Server Profiler, aby ułatwić analizowanie śladów.

Rozwiązywanie problemów związanych z danymi

Przy pomocy narzędzia SQL Server Profiler można rozwiązywać problemy związane z danymi, grupując ślady oraz pliki śladu według kolumn danych Duration, CPU, Reads lub Writes. Przykładami związanych z danymi problemów, które można rozwiązywać, są kwerendy o niskiej wydajności lub o wyjątkowo wysokiej liczbie operacji odczytu logicznego.

Dodatkowe informacje można odnaleźć, zapisując ślady w tabelach i wykorzystując język Transact-SQL do przeszukiwania danych zdarzeń przy pomocy kwerend. Na przykład, aby określić, które zdarzenia SQL:BatchCompleted mają zbyt długi czas oczekiwania, można wykonać następującą instrukcję:

SELECT TextData, Duration, CPU

FROM   nazwa_tabeli_sledzenia

WHERE  EventClass = 12 -- zdarzenia SQL:BatchCompleted

AND    CPU < (Duration * 1000)

Uwaga:

Począwszy od wersji SQL Server 2005 serwer raportuje czas trwania zdarzeń w mikrosekundach (jedna milionowa lub 10-6 sekundy), a ilość czasu procesora wykorzystaną przez zdarzenie w milisekundach (jedna tysięczna lub 10-3 sekundy). W wersji SQL Server 2000 serwer raportował zarówno czas trwania, jak i czas procesora w milisekundach. W SQL Server 2005 oraz wersjach późniejszych graficzny interfejs użytkownika SQL Server Profiler domyślnie wyświetla kolumnę Duration w milisekundach, ale gdy ślad jest zapisywany w pliku lub tabeli bazodanowej, kolumna Duration jest zapisywana w mikrosekundach.

Prezentowanie nazw obiektów podczas wyświetlania śladów

Aby prezentować nazwę obiektu zamiast identyfikatora obiektu (Object ID), trzeba przechwycić kolumny danych Server Name oraz Database ID wraz z kolumną danych Object Name.

Decydując się na grupowanie według kolumny danych Object ID, należy najpierw dokonać grupowania według kolumn danych Server Name oraz Database ID, a następnie według kolumny danych Object ID. Podobnie decydując się na grupowanie według kolumny danych Index ID, należy najpierw dokonać grupowania według kolumn danych Server Name, Database ID oraz Object ID, a następnie według kolumny danych Index ID. Trzeba dokonać grupowania zgodnie z tym porządkiem, ponieważ identyfikatory obiektu oraz indeksu nie są unikatowe w zakresie różnych serwerów i baz danych (oraz w zakresie różnych obiektów w przypadku identyfikatorów indeksów).

Odnajdowanie określonych zdarzeń w śladzie

Aby odnaleźć i pogrupować zdarzenia w śladzie, należy postępować zgodnie z następującą instrukcją:

1. Stworzyć własny ślad.

• Definiując ślad, należy przechwycić kolumny danych Event Class, ClientProcessID, oraz Start Time w dodatku do innych kolumn danych, które chce się przechwytywać.

• Należy pogrupować przechwycone dane według kolumny danych Event Class i przechwycić ślad do pliku lub tabeli. Aby pogrupować przechwycone dane, należy kliknąć opcję Organize Columns na karcie Events Selection w oknie dialogowym Trace Properties.

• Należy uruchomić ślad i zatrzymać go po upłynięciu odpowiedniej ilości czasu lub po przechwyceniu określonej liczby zdarzeń.

2. Odnaleźć zdarzenia docelowe.

• Należy otworzyć plik lub tabelę śledzenia i rozwinąć węzeł pożądanej klasy zdarzeń, na przykład Deadlock Chain .

• Należy przeszukiwać dane śledzenia aż do momentu odnalezienia odpowiednich zdarzeń (w odnajdowaniu wartości w śladzie pomaga polecenie Find w menu Edit w narzędziu SQL Server Profiler). Należy odnotować wartości w kolumnach danych ClientProcessID oraz Start Time śledzonych zdarzeń.

3. Zaprezentować zdarzenia w kontekście.

• Należy zaprezentować właściwości śladu i dokonać grupowania według kolumny danych ClientProcessID zamiast według kolumny danych Event Class.

• Należy rozwinąć węzeł każdego identyfikatora procesu klienckiego, który chce się wyświetlić. Własnoręcznie przeszukać ślad lub użyć funkcji Find w celu wyszukania wcześniej odnotowanych wartości Start Time zdarzeń docelowych. Zdarzenia są wyświetlane w porządku chronologicznym wraz z innymi zdarzeniami, które należą do każdego z wybranych identyfikatorów procesu klienckiego. Na przykład zdarzenia Deadlock oraz Deadlock Chain przechwycone w śladzie pojawiają się zaraz po zdarzeniach SQL:BatchStarting zawartych w rozwiniętym identyfikatorze procesu klienckiego.

Tę samą technikę można zastosować do odnajdowania dowolnych pogrupowanych zdarzeń. Po odnalezieniu poszukiwanych zdarzeń należy pogrupować je według ClientProcessID, ApplicationName lub innej klasy zdarzeń w celu wyświetlenia powiązanych aktywności w porządku chronologicznym.

 Do początku strony Do początku strony

Analizowanie zakleszczeń przy użyciu narzędzia SQL Server Profiler

SQL Server Profiler może posłużyć do identyfikowania zakleszczeń. Zakleszczenie (ang. deadlock) pojawia się, gdy istnieje cykliczna zależność między przynajmniej dwoma wątkami lub procesami dla pewnego zestawu zasobów na serwerze SQL Server. Przy użyciu narzędzia SQL Server Profiler można tworzyć ślad, który zapisuje, odtwarza i wyświetla zdarzenia zakleszczenia na potrzeby analiz.

Aby wyśledzić zdarzenia zakleszczenia, należy dodać do śladu klasę zdarzeń Deadlock graph. Ta klasa zdarzeń wypełnia kolumnę danych TextData w śladzie danymi XML dotyczącymi procesu oraz obiektów zaangażowanych w zakleszczenie. SQL Server Profiler może wyodrębnić dokument XML i zapisać go w specjalnym pliku Deadlock XML (.xdl), który można wyświetlić w późniejszym czasie w aplikacji SQL Server Management Studio. Można skonfigurować narzędzie SQL Server Profiler tak, aby zdarzenia Deadlock graph (graf zakleszczenia) były wyodrębniane do pojedynczego pliku zawierającego wszystkie zdarzenia Deadlock graph lub do osobnych plików. To wyodrębnianie można przeprowadzić w jeden z następujących sposobów:

• W czasie konfiguracji śladu przy pomocy karty Events Extraction Settings. Warto mieć świadomość, że karta ta nie jest widoczna, dopóki na karcie Events Selection nie zostanie wybrane zdarzenie Deadlock graph.

• Przy użyciu opcji Extract SQL Server Events w menu File.

• Poszczególne zdarzenia można również wyodrębnić i zapisać, klikając prawym klawiszem myszy wybrane zdarzenie i wybierając opcję Extract Event Data.

Deadlock Graph

SQL Server Profiler oraz SQL Server Management Studio wykorzystują graf Wait-For do opisywania zakleszczenia. Graf zakleszczenia Wait-For zawiera węzły procesów, węzły zasobów oraz krawędzie reprezentujące relacje między procesami a zasobami. Komponenty grafów Wait-For zostały zdefiniowane w następującej tabeli:

Węzeł procesu w grafie zakleszczenia

Umieszczany w grafie Wait-For węzeł procesu zawiera informacje o procesie. Następująca tabela zawiera omówienie poszczególnych komponentów procesu.

Nazwa komponentuDefinicja
Server process IdIdentyfikator procesu serwera (SPID), identyfikator przypisywany przez serwer procesowi, który jest właścicielem blokady.
Server batch IdIdentyfikator wsadu na serwerze (SBID).
Execution context Id

Identyfikator kontekstu wykonania (ECID). ID kontekstu wykonania danego wątku powiązanego z określonym identyfikatorem SPID.

ECID = {0,1,2,3, ...n}, gdzie 0 zawsze reprezentuje wątek główny lub nadrzędny, a {1,2,3, ...n} reprezentują wątki podrzędne.

Deadlock priorityPriorytet zakleszczenia dla procesu. Więcej informacji na temat dopuszczalnych wartości znaleźć można w artykuleSET DEADLOCK_PRIORITY (Transact-SQL).
Log UsedIlość obszaru dziennika wykorzystywana przez proces.
Owner IdIdentyfikator transakcji dla procesów, które wykorzystują transakcje i aktualnie oczekują na zwolnienie blokady.
Transaction descriptorWskaźnik do deskryptora transakcji, który opisuje stan transakcji.
Input buffer

Bufor wejściowy dla bieżącego procesu, definiuje typ zdarzenia i wykonywanej instrukcji.Do dopuszczalnych wartości należą:

Language

RPC

None

Statement

Typ instrukcji. Dopuszczalne wartości to:

NOP

SELECT

UPDATE

INSERT

DELETE

Unknown

Węzeł zasobów w grafie zakleszczenia

Podczas zakleszczenia każdy z dwóch procesów oczekuje na zasób, który jest przetrzymywany przez drugi proces. W grafie zakleszczenia zasoby są wyświetlane w postaci węzłów zasobów.

 Do początku strony Do początku strony

Analizowanie kwerend przy użyciu wyników SHOWPLAN w SQL Server Profiler

Do definicji śladu można dodawać klasy zdarzenia Showplan, które powodują, że SQL Server Profiler zbiera i wyświetla informacje o planie kwerendy. Można również wyodrębnić zdarzenia Showplan z innych zdarzeń zebranych w śladzie i zapisać je w osobnym pliku XML.

Wyodrębnienia zdarzeń Showplan ze śladu można dokonać na jeden z następujących sposobów:

• W czasie konfiguracji śladu przy pomocy karty Events Extraction Settings. Warto mieć świadomość, że karta ta nie jest widoczna, dopóki na karcie Events Selection nie zostanie wybrane jedno ze zdarzeń Showplan.

• Przy użyciu opcji Extract SQL Server Events w menu File.

• Można również wyodrębnić i zapisać poszczególne zdarzenia, klikając prawym klawiszem myszy wybrane zdarzenie i wybierając opcję Extract Event Data.

Zdarzenia Showplan

Śledzone zdarzenia Showplan zostały wymienione i opisane w następującej tabeli.

Nazwa zdarzeniaOpis
Performance statisticsWskazuje, kiedy skompilowany Showplan zostaje po raz pierwszy umieszczony w pamięci podręcznej, kiedy zostaje skompilowany ponownie oraz kiedy zostaje usunięty z pamięci podręcznej planów.Kolumna TextData zawiera Showplan w formacie XML.
Showplan AllWyświetla plan kwerendy z pełnymi informacjami o kompilacji wykonywanej instrukcji Transact-SQL.Na przykład może prezentować oszacowania kosztów oraz listy kolumn.
Showplan All For Query CompilePojawia się, gdy kwerenda jest kompilowana lub ponownie kompilowana na serwerze SQL Server. Jest to odpowiednik czasu kompilacji dla zdarzenia Showplan All. Showplan All pojawia się, gdy kwerenda jest wykonywana, natomiast Showplan All For Query Compile, gdy jest ona kompilowana.
Showplan Statistics ProfileWyświetla plan kwerendy z pełnymi informacjami z czasu wykonania instrukcji Transact-SQL m.in. rzeczywistą liczbą wierszy przechodzących przez każdą z operacji.
Showplan TextWyświetla drzewo planu kwerendy wykonywanej instrukcji Transact-SQL w postaci danych binarnych.
Showplan Text (Unencoded)Wyświetla drzewo planu kwerendy wykonywanej instrukcji Transact-SQL w postaci tekstu. Ta klasa zdarzeń prezentuje te same informacje co Showplan Text, z tą różnicą, że wyświetla tekst w postaci tekstowej zamiast binarnej..
Showplan XMLWyświetla plan kwerendy z pełnymi danymi zbieranymi podczas optymalizacji kwerendy. To zdarzenie jest generowane tylko wtedy, gdy plan kwerendy jest optymalizowany.
Showplan XML For Query CompileWyświetla plan kwerendy, gdy kwerenda jest kompilowana.
Showplan XML Statistics ProfileWyświetla plan kwerendy z pełnymi informacjami z czasu wykonania w formacie XML. Ta klasa zdarzeń przechwytuje na przykład liczbę wierszy przechodzących przez każdy z operatorów wykonywanej instrukcji Transact-SQL.

 Do początku strony Do początku strony

Filtrowanie śladów przy użyciu narzędzia SQL Server Profiler

Można definiować filtry kolumn danych dla śledzonych zdarzeń SQL Server Profiler, aby przechwytywane były jedynie informacje dotyczące wybranych, interesujących zdarzeń. Filtry śledzenia redukują wpływ śledzenia na wydajność systemu, gdyż dzięki nim w śladzie przechwytywana jest mniejsza ilość zdarzeń. Filtrowanie sprawia również, że czytanie danych wyjściowych śledzenia jest łatwiejsze, ponieważ istnieje mniej zdarzeń do przeszukiwania.

Aby filtrować ślady przy użyciu narzędzia SQL Server Profiler

How to: Filter Events in a Trace (SQL Server Profiler)

 Do początku strony Do początku strony

Odtwarzanie śladów

Odtwarzanie oznacza możliwość zapisywania śladu i odtwarzania go w późniejszym czasie. Ta funkcjonalność umożliwia odtworzenie aktywności przechwyconych w śladzie. Tworząc lub edytując ślad, można zapisać go, a następnie odtworzyć w przyszłości.

SQL Server Profiler posiada wielowątkowy silnik odtwarzający, który potrafi symulować połączenia użytkowników oraz uwierzytelnianie SQL Server. Odtwarzane jest przydatne w przypadku rozwiązywania problemów związanych z aplikacją lub procesem. Po zidentyfikowaniu problemu i zaimplementowaniu poprawek można uruchomić ślad, w którym wykryty został potencjalny problem, z wykorzystaniem poprawionej aplikacji lub procesu. Następnie można odtworzyć oryginalny ślad i porównać efekty.

Odtwarzanie śladu wspiera debugowanie przy użyciu opcji Toggle Breakpoint oraz Run to Cursor w menu Replay narzędzia SQL Server Profiler. Opcje te usprawniają zwłaszcza analizę długich skryptów, ponieważ dzielą odtwarzanie śladu na krótkie segmenty, które mogą być analizowane etapami.

W tym dziale

TematOpis
Replay RequirementsOpisuje zdarzenia, które muszą zostać ujęte w definicji śledzenia, aby ślad mógł zostać odtworzony.
Replay OptionsOpisuje opcje, które można ustawić w oknie dialogowym Replay Configuration w narzędziu SQL Server Profiler.
Considerations for Replaying TracesOpisuje zdarzenia śledzenia, które nie mogą zostać odtworzone oraz wpływ odtwarzania śladów na wydajność serwera.

 Do początku strony Do początku strony

Scenariusze wykorzystania narzędzia SQL Server Profiler

Pierwszym etapem zastosowania narzędzia SQL Server Profiler powinno być zidentyfikowanie powodów monitorowania instancji SQL Server. Niniejszy artykuł opisuje typowe scenariusze, w których można użyć narzędzia SQL Server Profiler do zbierania informacji w śladzie.

Do typowych scenariuszy wykorzystania narzędzia SQL Server Profiler należą:

• Odnajdowanie kwerend o najgorszej wydajności. Można na przykład stworzyć ślad, który przechwytuje zdarzenia związane z klasami zdarzeń TSQL oraz Stored Procedure (RPC:Completed oraz SQL:BatchCompleted), dołączyć do śladu wszystkie kolumny danych, pogrupować je według kolumny Duration i określić kryteria dla

zdarzenia. Na przykład, jeśli określi się, że wartość Duration dla zdarzenia musi wynosić przynajmniej 10000 mikrosekund, można wyeliminować ze śladu zdarzenia o krótszym czasie trwania. Minimalna wartość kolumny Duration może zostać zwiększona w zależności od potrzeb. Aby monitorować tylko jedną bazę danych, należy określić wartość dla kryterium zdarzenia DatabaseID.

• Identyfikowanie przyczyn zakleszczeń. Można na przykład stworzyć ślad, który przechwytuje zdarzenia związane z klasami zdarzeń TSQL oraz Stored Procedure (RPC:Starting oraz SQL:BatchStarting), a także klasami zdarzeń Locks ( Deadlock graph , Lock:Deadlock lub Lock:DeadlockChain). Do śladu można dołączyć wszystkie kolumny danych i pogrupować je według EventClass. Aby monitorować tylko jedną bazę danych, należy określić wartość dla kryterium zdarzenia DatabaseID. W przypadku określenia klasy zdarzeń Deadlock graph SQL Server Profiler wygeneruje graficzną reprezentację zakleszczenia. Aby wyświetlić połączenia zaangażowane w zakleszczenie, należy wykonać jedną z następujących czynności:

• Otworzyć ślad zawierający przechwycone dane, pogrupować dane według kolumny ClientProcessID i rozwinąć oba połączenia zaangażowane w zakleszczenie.

• Zapisać przechwycone dane w pliku śladu i otworzyć plik śladu dwukrotnie, aby był on widoczny w dwóch osobnych oknach SQL Server Profiler. Pogrupować przechwycone dane według ClientProcessID, a następnie rozwinąć identyfikator procesu klienckiego zaangażowanego w zakleszczenie, każde połączenie zakleszczenia w osobnym oknie. Należy ułożyć okna tak, aby prezentować zdarzenia powodujące zakleszczenie. Aby zapisać wybrane dane grafu zakleszczenia, należy prawym klawiszem myszy kliknąć zdarzenie zakleszczenia i wybrać opcję Extract Event Data .

• Monitorowanie wydajności procedury składowanej. Można na przykład stworzyć ślad, który przechwytuje zdarzenia związane z klasami zdarzeń Stored Procedure (SP:Completed, SP:Starting, SP:StmtCompleted i SP:StmtStarting) oraz klasami zdarzeń TSQL (SQL:BatchStarting and SQL:BatchCompleted). Do śladu można dołączyć wszystkie niezbędne kolumny danych i pogrupować je według ClientProcessID. Aby monitorować tylko jedną bazę danych, należy użyć filtra Database ID do określania wartości dla kryterium zdarzenia DatabaseID. Analogicznie, aby monitorować tylko jedną procedurę składowaną, należy użyć filtra Object ID w celu określania wartości dla kryterium zdarzenia Object ID.

• Poddawanie inspekcji aktywności SQL Server. Na przykład, jeśli administrator zabezpieczeń zawsze musi wiedzieć, którzy użytkownicy są zalogowani na serwerze, ślad SQL Server Profiler może dostarczać kompletny wykaz użytkowników, którzy zalogowali się lub wylogowali z serwera. Informacje te mogą następnie zostać wykorzystane w celach prawnych lub technicznych. Należy stworzyć ślad, wybierając zdarzenie Audit Login. Aby zwracać odpowiednie informacje, należy wybrać następujące kolumny danych: EventClass (wybrana domyślnie), EventSubClass, LoginSID, LoginName.

• Monitorowanie aktywności Transact-SQL według użytkowników. Można na przykład stworzyć ślad, który przechwytuje zdarzenia związane z klasami zdarzeń Sessions, ExistingConnection oraz TSQL. Do śladu można dołączyć wszystkie kolumny danych, nie określać żadnego kryterium zdarzenia i pogrupować przechwycone zdarzenia według DBUserName.

• Zbieranie reprezentatywnej próbki zdarzeń do testów obciążeniowych. SQL Server Profiler oferuje predefiniowany szablon TSQL_Replay, który może posłużyć do iteracyjnego dostrajania, np. testowania wydajnościowego.

• Zbieranie próbki zdarzeń w celu dostrajania fizycznego projektu bazy danych przy użyciu narzędzia Database Engine Tuning Advisor. SQL Server Profiler oferuje predefiniowany szablon Tuning, który gromadzi odpowiednie zdarzenia Transact-SQL w danych wyjściowych śledzenia tak, aby mogły one zostać wykorzystane jako obciążenie robocze w narzędziu Database Engine Tuning Advisor.

 Do początku strony Do początku strony

Microsoft SQL Server 2008