| Termin | Definicja |
|---|---|
| Diagnostyka w SSMS | Diagnostyka w SSMS to proces analizy problemów bazodanowych przeprowadzany za pomocą narzędzia SQL Server Management Studio. Zakres diagnostyki dostępny w SSMSDiagnostyka w SQL Server Management Studio (SSMS) polega na wykorzystaniu narzędzi dostarczanych z interfejsem administracyjnym Microsoft SQL Server do ustalenia, dlaczego zapytanie, sesja, baza danych albo instancja działa nieprawidłowo. SSMS nie jest osobnym silnikiem bazodanowym. Jest aplikacją kliencką, która łączy się z usługą SQL Server i przekazuje jej polecenia, a następnie prezentuje wyniki, komunikaty błędów oraz informacje o stanie obiektów. Zakres dostępnych danych zależy od wersji serwera, użytego typu połączenia i uprawnień konta. Podczas analizy można sprawdzać między innymi status instancji, dostępność bazy, właściwości plików danych i plików dziennika transakcji, aktywne sesje, blokady, oczekiwania oraz wykonanie konkretnych zapytań. SSMS pozwala także przeglądać komunikaty zwracane przez SQL Server, historię zadań SQL Server Agent, konfigurację wybranych funkcji oraz informacje zgromadzone w widokach katalogowych i dynamicznych widokach zarządzania. Każdy wniosek powinien być powiązany z konkretnym objawem, czasem wystąpienia problemu i obserwowanym stanem serwera. Analiza zapytań i planów wykonaniaJednym z podstawowych zastosowań SSMS jest badanie zapytań Transact-SQL (T-SQL). W oknie zapytania można odczytać komunikaty o błędach składni, nieistniejących obiektach, niezgodnych typach danych lub braku uprawnień. Polecenie SET STATISTICS TIME ON pozwala uzyskać informacje o czasie procesora i czasie wykonania zapytania, natomiast SET STATISTICS IO ON pokazuje między innymi liczbę odczytów logicznych i fizycznych dla tabel oraz indeksów. Są to dane dotyczące konkretnego uruchomienia, dlatego ich interpretacja wymaga uwzględnienia rozmiaru danych, pamięci podręcznej i równoległości wykonania. SSMS może wyświetlić szacowany albo rzeczywisty plan wykonania zapytania. Plan opisuje operatory użyte przez optymalizator, takie jak skanowanie lub wyszukiwanie indeksu, złączenia, sortowanie i agregacja. Rzeczywisty plan zawiera dodatkowo informacje o faktycznej liczbie przetworzonych wierszy, co umożliwia porównanie założeń optymalizatora z przebiegiem wykonania. Duża rozbieżność między estymowaną a rzeczywistą liczbą wierszy może wskazywać na nieaktualne statystyki, nietypowy rozkład danych albo predykat trudny do oszacowania. Sam plan nie stanowi jednak dowodu, że konkretny indeks będzie właściwym rozwiązaniem; należy jeszcze ocenić koszt zapisu, selektywność warunku i wpływ na inne zapytania. W SSMS można korzystać także z Query Store, jeżeli funkcja została włączona dla danej bazy i dostępna w używanej edycji oraz wersji SQL Server. Query Store przechowuje informacje o zapytaniach, planach i statystykach ich wykonania, dzięki czemu można porównywać wydajność w czasie. Ułatwia to wykrycie regresji, czyli sytuacji, w której zapytanie zaczęło wykonywać się wolniej po zmianie planu, danych lub konfiguracji. Analiza powinna rozróżniać czas trwania, zużycie procesora, liczbę odczytów i liczbę wykonań, ponieważ wysoki łączny koszt może wynikać zarówno z jednego ciężkiego zapytania, jak i z bardzo częstego zapytania o umiarkowanym koszcie. Blokady, oczekiwania i kondycja instancjiProblemy z pozornym zawieszeniem zapytania często wymagają sprawdzenia blokad i oczekiwań. Widoki dynamicznego zarządzania, takie jak sys.dm_exec_requests, sys.dm_exec_sessions oraz sys.dm_os_waiting_tasks, mogą pokazać aktywne żądania, sesje oczekujące i typ oczekiwania. Informacja o oczekiwaniu nie oznacza automatycznie błędu. Oczekiwanie może być normalnym elementem pracy, ale jego znaczenie zależy od czasu trwania, częstotliwości, zasobu, którego dotyczy, oraz wpływu na inne sesje. W przypadku blokady trzeba ustalić sesję blokującą, sesję oczekiwaną, typ blokady i polecenie uruchomione w ramach transakcji. Ważnym elementem diagnostyki jest sprawdzenie transakcji pozostawionych otwartych. Długo trwająca transakcja może utrzymywać blokady oraz uniemożliwiać zwalnianie części zasobów, nawet jeżeli aplikacja przestała aktywnie wysyłać polecenia. Do analizy można wykorzystać między innymi DBCC OPENTRAN, który pomaga wskazać najstarszą aktywną transakcję w bazie. Decyzja o zakończeniu sesji przez KILL wymaga ostrożności, ponieważ SQL Server może rozpocząć wycofywanie zmian, a operacja rollbacku może trwać zależnie od ilości pracy wykonanej przez transakcję. SSMS udostępnia również podgląd właściwości baz danych, plików danych i dzienników transakcji. W diagnostyce należy odróżnić brak wolnego miejsca na woluminie od zapełnienia pliku oraz zapełnienie dziennika wynikające z modelu odzyskiwania, aktywnej transakcji albo niewykonanego procesu tworzenia kopii zapasowej dziennika. Powiększenie pliku bez ustalenia przyczyny może tylko odsunąć problem. Przy podejrzeniu uszkodzenia struktur można użyć DBCC CHECKDB, którego wynik należy zachować i analizować w odniesieniu do zaleceń Microsoftu. Nie powinno się rozpoczynać od poleceń naprawczych, ponieważ nieprawidłowa naprawa może prowadzić do utraty danych. Metodyczne prowadzenie rozpoznania problemuSkuteczna diagnostyka w SSMS zaczyna się od zebrania objawów: nazwy instancji i bazy, treści komunikatu, czasu wystąpienia, zakresu dotkniętych obiektów oraz informacji, czy problem jest stały, czy okresowy. Następnie warto rozdzielić błąd połączenia od błędu wykonania zapytania. Nieudane logowanie, niedostępny port, problem z uwierzytelnianiem Windows lub SQL Server i brak uprawnień dają inny kierunek analizy niż błąd składni, blokada albo niewystarczająca ilość miejsca. Wnioski powinny wynikać z kilku zgodnych obserwacji, a nie z pojedynczego komunikatu wyrwanego z kontekstu. Podczas sprawdzania wydajności należy porównać działanie tego samego zapytania w podobnych warunkach, uwzględniając parametry, aktualny plan, obciążenie instancji i stan pamięci podręcznej. Wyniki uzyskane po jednorazowym uruchomieniu nie muszą odzwierciedlać zachowania aplikacji produkcyjnej. Warto zapisać plan wykonania, tekst zapytania, statystyki IO i TIME oraz czas pomiaru. Tak przygotowany materiał pozwala odróżnić problem danych, planu, blokowania, zasobów systemowych i konfiguracji SQL Server, a także zweryfikować, czy późniejsza zmiana rzeczywiście poprawiła działanie. SSMS jest więc narzędziem do obserwacji i kontrolowanej analizy Microsoft SQL Server, a nie automatycznym generatorem diagnozy. Interpretacja wyników wymaga znajomości T-SQL, mechanizmu blokad, planów wykonania, dziennika transakcji i uprawnień bezpieczeństwa. W przypadku krytycznych baz przed zmianą konfiguracji, indeksów, planów lub sposobu odzyskiwania należy przygotować kopię zapasową, ustalić możliwość wycofania zmiany i wykonać pomiar porównawczy. Takie podejście ogranicza ryzyko zastąpienia pierwotnego problemu nowym, trudniejszym do odwrócenia skutkiem. |