Udostępnij za pośrednictwem


Uzyskiwanie dostępu do informacji diagnostycznych w dzienniku zdarzeń rozszerzonych

pobierz sterownik JDBC

W sterowniku Microsoft JDBC Driver 4.0 dla programu SQL Server śledzenie (śledzenie operacji sterownika) ułatwia skorelowanie zdarzeń klienta z informacjami diagnostycznymi. Można śledzić takie elementy jak błędy połączeń z buforu pierścienia łączności serwera i informacje o wydajności aplikacji w dzienniku zdarzeń rozszerzonych. Aby uzyskać informacje o odczytywaniu dziennika zdarzeń rozszerzonych, zobacz Zdarzenia rozszerzone.

Szczegóły

W przypadku operacji połączenia sterownik JDBC firmy Microsoft dla programu SQL Server wyśle identyfikator połączenia klienta. Jeśli połączenie nie powiedzie się, możesz uzyskać dostęp do buforu pierścienia łączności i znaleźć pole ClientConnectionID, aby uzyskać informacje diagnostyczne dotyczące błędu. Aby uzyskać więcej informacji na temat buforu pierścienia, zobacz rozwiązywanie problemów z łącznością w programie SQL Server 2008 za pomocą buforu pierścienia łączności. Identyfikatory połączeń klienta są rejestrowane w buforze pierścienia tylko wtedy, gdy wystąpi błąd. Jeśli połączenie nie uda się przed wysłaniem pakietu prelogin, identyfikator połączenia klienta nie zostanie wygenerowany.

Identyfikator połączenia klienta to 16-bajtowy identyfikator GUID. Jeśli akcja client_connection_id zostanie dodana do zdarzeń w sesji zdarzeń rozszerzonych, identyfikator połączenia klienta będzie znajdować się w danych wyjściowych docelowych zdarzeń rozszerzonych. Aby uzyskać więcej danych diagnostycznych sterowników klienta, możesz włączyć śledzenie i ponownie uruchomić polecenie połączenia, aby zobaczyć pole ClientConnectionID w śladzie.

Identyfikator połączenia klienta można uzyskać programowo przy użyciu interfejsu ISQLServerConnection. Identyfikator połączenia będzie również obecny w przypadku wszelkich wyjątków związanych z połączeniem.

W przypadku wystąpienia błędu połączenia identyfikator połączenia klienta w informacjach śledzenia wbudowanej diagnostyki (BID) serwera i w buforze pierścienia łączności może pomóc skorelować połączenia klienta z połączeniami na serwerze. Aby uzyskać więcej informacji na temat śladów BID na serwerze, zobacz Śledzenie dostępu do danych. Należy pamiętać, że artykuł dotyczący śledzenia dostępu do danych zawiera również informacje o śledzeniu dostępu do danych, które nie mają zastosowania do sterownika JDBC firmy Microsoft dla programu SQL Server; Zobacz Śledzenie operacji sterownika, aby uzyskać informacje na temat wykonywania śledzenia dostępu do danych przy użyciu sterownika JDBC firmy Microsoft dla programu SQL Server.

Sterownik JDBC wysyła również identyfikator działania specyficzny dla wątku. Jeśli sesja zostanie uruchomiona z włączoną opcją TRACK_CAUSALITY, identyfikator działania zostanie przechwycony w sesji zdarzeń rozszerzonych. W przypadku problemów z wydajnością aktywnego połączenia można uzyskać identyfikator aktywności ze śledzenia klienta (pole ActivityID), a następnie znaleźć identyfikator aktywności w danych wyjściowych zdarzeń rozszerzonych.

Identyfikator działania w ramach rozszerzonych zdarzeń jest 16-bajtowym identyfikatorem GUID (nie takim samym jak identyfikator GUID dla identyfikatora połączenia klienta) z dołączonym numerem sekwencyjnym o długości 4 bajtów. Numer sekwencji reprezentuje kolejność żądania w wątku. Identyfikator ActivityId jest wysyłany dla instrukcji wsadowych SQL i żądań RPC. Aby włączyć wysyłanie identyfikatora ActivityId do serwera, określ następującą parę klucz-wartość w pliku Logging.Properties:

com.microsoft.sqlserver.jdbc.traceactivity = on

Każda wartość inna niż on (uwzględniana wielkość liter) spowoduje wyłączenie wysyłania identyfikatora ActivityId.

Aby uzyskać więcej informacji, zobacz Śledzenie operacji sterownika. Ta flaga śledzenia jest używana z odpowiednimi rejestratorami obiektów JDBC, aby zdecydować, czy śledzić i wysyłać ActivityId w sterowniku JDBC. Oprócz zaktualizowania pliku Logging.Properties, włącz logger com.microsoft.sqlserver.jdbc na poziomie FINER lub wyższym. Aby wysłać identyfikator ActivityId do serwera dla żądań, które są wykonywane przez określoną klasę, włącz odpowiedni rejestrator klas w FINER lub FINEST. Jeśli na przykład klasa to SQLServerStatement, włącz logger com.microsoft.sqlserver.jdbc.SQLServerStatement.

W poniższym przykładzie użyto Transact-SQL do rozpoczęcia sesji zdarzeń rozszerzonych, która jest przechowywana w buforze pierścieniowym i rejestruje identyfikator aktywności wysyłany przez klienta podczas operacji RPC i wsadowych:

create event session MySession on server
add event connectivity_ring_buffer_recorded,
add event sql_statement_starting (action (client_connection_id)),
add event sql_statement_completed (action (client_connection_id)),
add event rpc_starting (action (client_connection_id)),
add event rpc_completed (action (client_connection_id))
add target ring_buffer with (track_causality=on)

Zobacz też

diagnozowanie problemów ze sterownikiem JDBC