Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

SYS.DM_TRAN_ACTIVE_TRANSACTIONS

Termin Definicja
SYS.DM_TRAN_ACTIVE_TRANSACTIONS

sys.dm_tran_active_transactions zwraca listę aktywnych transakcji na poziomie instancji.

SYS.DM_TRAN_ACTIVE_TRANSACTIONS — czym jest widok aktywnych transakcji

SYS.DM_TRAN_ACTIVE_TRANSACTIONS to dynamiczny widok zarządzania dostępny w Microsoft SQL Server. Służy do obserwowania transakcji, które są aktualnie znane silnikowi bazy danych na poziomie całej instancji. W praktyce pozwala ustalić, jakie jednostki pracy pozostają otwarte, jaki mają stan, kiedy zostały rozpoczęte oraz z jakiego źródła pochodzą. Informacje te są przydatne podczas analizy blokad, opóźnień zatwierdzania, długo trwających operacji oraz sytuacji, w których dziennik transakcji rośnie szybciej, niż zakładano.

Wyniki nie przedstawiają wyłącznie transakcji uruchomionych przez pojedyncze zapytanie widoczne w danym momencie. Mogą obejmować transakcje użytkownika, systemowe oraz wewnętrzne, a także elementy związane z mechanizmami koordynującymi pracę kilku baz danych. Każdy wiersz opisuje transakcję za pomocą identyfikatora i zestawu atrybutów, które następnie można połączyć z innymi widokami dynamicznymi. Sam widok nie jest historią operacji ani rejestrem wszystkich transakcji zakończonych w przeszłości. Pokazuje stan obserwowany w chwili wykonania zapytania.

SYS.DM_TRAN_ACTIVE_TRANSACTIONS — kontekst techniczny i porównania

Najważniejszą cechą tego widoku jest zakres instancji. Oznacza to, że analiza nie ogranicza się do jednej bazy danych wskazanej w instrukcji SELECT. Z tego powodu identyfikator transakcji może być zestawiany z informacjami pochodzącymi z wielu baz działających w ramach tej samej instancji. Dla porównania widok sys.dm_tran_current_transaction opisuje bieżącą transakcję kontekstu, w którym wykonywane jest zapytanie, natomiast sys.dm_tran_session_transactions pomaga ustalić powiązanie między transakcjami a sesjami. Widok sys.dm_exec_requests dostarcza danych o aktualnie wykonywanych żądaniach, lecz nie zastępuje informacji o stanie samej transakcji.

Podczas diagnozy blokowania często zestawia się SYS.DM_TRAN_ACTIVE_TRANSACTIONS z sys.dm_tran_locks, sys.dm_exec_sessions, sys.dm_exec_requests oraz sys.dm_exec_sql_text. Takie połączenie umożliwia przejście od identyfikatora transakcji do sesji, żądania, tekstu SQL i utrzymywanych blokad. Należy pamiętać, że nie każdy aktywny wiersz musi mieć bezpośrednio odpowiadające mu aktywne żądanie. Transakcja może pozostawać otwarta po zakończeniu ostatniego polecenia, gdy aplikacja nie wykonała jeszcze COMMIT albo ROLLBACK. W takiej sytuacji sesja może wyglądać na bezczynną, mimo że nadal utrzymuje zasoby i wpływa na inne operacje.

Wśród istotnych atrybutów można spotkać między innymi transaction_id, transaction_begin_time, transaction_type, transaction_state oraz transaction_uow. Identyfikator powinien być traktowany jako klucz do dalszego łączenia danych, a nie jako informacja o kolejności rozpoczęcia. Czas rozpoczęcia pozwala ocenić wiek transakcji, ale sam w sobie nie dowodzi wystąpienia błędu. Typ transakcji wskazuje ogólną kategorię pracy, natomiast stan opisuje etap cyklu życia rozpoznawany przez silnik. Interpretacja wartości wymaga odniesienia do dokumentacji konkretnej wersji SQL Server oraz do kontekstu działania aplikacji.

SYS.DM_TRAN_ACTIVE_TRANSACTIONS — typowe problemy i objawy

Jednym z częstszych problemów jest transakcja pozostawiona otwarta przez aplikację. Może to nastąpić po wyjątku, zerwaniu połączenia, błędzie obsługi formularza albo przerwaniu procesu przed wykonaniem instrukcji kończącej. Skutkiem bywają blokady, oczekiwanie innych sesji i narastająca liczba zmian wymagających utrzymania w dzienniku. W takich przypadkach czas rozpoczęcia transakcji z SYS.DM_TRAN_ACTIVE_TRANSACTIONS stanowi ważną wskazówkę, lecz powinien zostać porównany z aktywnością sesji, ostatnim poleceniem oraz informacją o blokujących zasobach.

Inny przypadek dotyczy transakcji oczekującej na zasób zajęty przez inną sesję. Wiersz w widoku aktywnych transakcji może potwierdzać, że jednostka pracy nadal istnieje, ale nie wyjaśnia samodzielnie, dlaczego nie może przejść dalej. Do ustalenia przyczyny potrzebne są dane o żądaniach oczekujących, typach blokad i zależnościach między sesjami. Pomocne jest sporządzenie obrazu sytuacji w jednym momencie, ponieważ stan widoków dynamicznych zmienia się w trakcie pracy systemu.

Wzrost dziennika transakcji również może kierować uwagę na aktywną transakcję, która utrzymuje bardzo długi zakres zmian. Nie należy jednak zakładać, że każdy duży dziennik oznacza pojedynczą transakcję. Wpływ mogą mieć także opóźnione operacje zapisu, procesy odzyskiwania, replikacja, punkty kontrolne oraz sposób wykonywania kopii zapasowych dziennika. SYS.DM_TRAN_ACTIVE_TRANSACTIONS dostarcza jednego elementu układanki, dlatego wnioski powinny wynikać z kilku zgodnych obserwacji.

SYS.DM_TRAN_ACTIVE_TRANSACTIONS — praktyczne wskazówki diagnostyczne

Analizę warto rozpocząć od odczytu podstawowych kolumn i uporządkowania wyników według czasu rozpoczęcia. Pozwala to szybko zauważyć transakcje najstarsze, choć wiek nie powinien być jedynym kryterium oceny. Następnie można ustalić, czy dana transakcja jest powiązana z sesją użytkownika, zadaniem systemowym czy procesem wewnętrznym. Przydatne jest zachowanie czasu wykonania pomiaru, nazwy bazy i informacji o aktualnym obciążeniu, aby później odróżnić stały problem od krótkiego epizodu.

Przykładowe zapytanie może ograniczać się do pól identyfikacyjnych i czasu rozpoczęcia:

SELECT transaction_id, transaction_begin_time, transaction_type, transaction_state, transaction_uow
FROM sys.dm_tran_active_transactions
ORDER BY transaction_begin_time;

Takiego odczytu nie należy traktować jako polecenia naprawczego. Widok ma charakter diagnostyczny i nie kończy transakcji, nie zwalnia blokad oraz nie usuwa danych. Zakończenie transakcji przez wymuszenie rozłączenia sesji może spowodować wycofanie zmian, dodatkowe oczekiwanie oraz obciążenie związane z odzyskiwaniem. Przed podjęciem decyzji powinno się potwierdzić właściciela sesji, znaczenie operacji i możliwość bezpiecznego zakończenia pracy aplikacji.

W środowisku produkcyjnym korzystne jest wykonywanie kilku krótkich pomiarów zamiast opierania się na pojedynczym wyniku. Powtarzalność tego samego identyfikatora, zbliżone czasy oraz zgodność z obserwowanymi blokadami zwiększają wiarygodność diagnozy. Warto także sprawdzić, czy konto wykonujące zapytanie ma odpowiednie uprawnienia do odczytu informacji o innych sesjach. Brak części danych może wynikać z ograniczeń widoczności, a nie z braku transakcji.

SYS.DM_TRAN_ACTIVE_TRANSACTIONS — kiedy zgłosić się do serwisu

Pomoc serwisowa jest uzasadniona, gdy aktywne transakcje regularnie powodują blokowanie, dziennik pozostaje pełny mimo prawidłowych procedur, aplikacja zgłasza przekroczenia czasu oczekiwania albo nie można powiązać identyfikatora transakcji z konkretnym procesem. Szczególnej ostrożności wymaga sytuacja, w której problem pojawia się po zmianie aplikacji, sterownika, konfiguracji połączeń lub sposobu obsługi błędów. Wtedy sama obserwacja SYS.DM_TRAN_ACTIVE_TRANSACTIONS może nie wystarczyć i potrzebne bywa prześledzenie całej ścieżki od aplikacji do silnika bazy danych.

W ramach przygotowania do konsultacji warto zebrać orientacyjny czas występowania problemu, fragmenty komunikatów, wyniki odczytów widoków dynamicznych oraz informację, czy objaw dotyczy jednej bazy, czy całej instancji. Nie powinno się usuwać dzienników, przerywać przypadkowych sesji ani zmieniać ustawień bez rozpoznania zależności. Warszawskie Pogotowie Komputerowe 24/7 może zostać wskazane jako miejsce konsultacji przy problemach z komputerem, systemem bazodanowym lub stabilnością pracy, gdy potrzebne jest uporządkowanie objawów i bezpieczne ustalenie dalszych czynności.