확장 이벤트 로그의 진단 정보 액세스
MICROSOFT JDBC Driver 4.0 for SQL Server에서 추적(드라이버 작업 추적)을 사용하면 클라이언트 이벤트와 진단 정보의 상관 관계를 쉽게 지정할 수 있습니다. 서버의 연결 링 버퍼에서 발생한 연결 오류 및 확장 이벤트 로그의 애플리케이션 성능 정보와 같은 항목을 추적할 수 있습니다. 확장 이벤트 로그를 읽는 방법에 대한 자세한 내용은 확장 이벤트를 참조하세요.
세부 정보
연결 작업의 경우, Microsoft JDBC Driver for SQL Server에서 클라이언트 연결 ID를 전송합니다. 연결에 실패하는 경우 연결 링 버퍼에 액세스하고 ClientConnectionID 필드를 찾아 실패에 대한 진단 정보를 확인할 수 있습니다. 링 버퍼에 대한 더 자세한 정보는 연결 링 버퍼를 사용하여 SQL Server 2008의 연결 문제 해결을 참조하십시오. 클라이언트 연결 ID는 오류가 발생한 경우에만 링 버퍼에 로그인됩니다. 로그인 전 패킷을 전송하기 전에 연결이 실패하는 경우 클라이언트 연결 ID는 생성되지 않습니다.
클라이언트 연결 ID는 16바이트 GUID입니다. client_connection_id 동작이 확장 이벤트 세션에서 이벤트에 추가된 경우 확장 이벤트 대상 출력에 클라이언트 연결 ID가 있습니다. 더 많은 클라이언트 드라이버 진단 추적을 위해서는 추적을 사용하도록 설정하고 연결 명령을 다시 실행하여 추적에서 ClientConnectionID 필드를 볼 수 있습니다.
ISQLServerConnection 인터페이스를 사용하여 클라이언트 연결 ID를 프로그래밍 방식으로 가져올 수 있습니다. 연결 ID는 연결 관련 예외에도 존재합니다.
연결 오류가 발생하는 경우 서버의 BID(기본 제공 진단) 추적 정보 및 연결 링 버퍼에 있는 클라이언트 연결 ID를 사용하여 클라이언트 연결과 서버 연결의 상관관계를 지정할 수 있습니다. 서버의 BID 추적에 대한 자세한 내용은 데이터 액세스 추적을 참조하세요. 데이터 액세스 추적 문서에는 데이터 액세스 추적에 대한 정보도 포함되어 있습니다. 이 정보는 Microsoft JDBC Driver for SQL Server에 적용되지 않습니다. Microsoft JDBC Driver for SQL Server을(를) 사용하여 데이터 액세스 추적을 수행하는 방법에 대한 자세한 내용은 드라이버 작업 추적을 참조하세요.
JDBC 드라이버는 또한 스레드별 작업 ID를 전송합니다. TRACK_CAUSAILITY 옵션이 설정된 상태로 세션이 시작된 경우 확장 이벤트 세션에 동작 ID가 캡처됩니다. 활성 연결에 성능 문제가 발생할 경우 클라이언트의 추적(ActivityID 필드)에서 작업 ID를 가져온 다음 확장 이벤트 출력에서 작업 ID를 찾을 수 있습니다.
확장 이벤트의 동작 ID는16바이트 GUID(클라이언트 연결 ID의 GUID와는 다름)에 4바이트 시퀀스 번호를 추가한 것입니다. 시퀀스 번호는 스레드 내 요청의 순서를 나타냅니다. ActivityId는 SQL 일괄 처리 문 및 RPC 요청에 대해 전송됩니다. ActivityId를 서버로 보낼 수 있도록 하려면 Logging.Properties 파일에서 다음 키-값 쌍을 지정합니다.
com.microsoft.sqlserver.jdbc.traceactivity = on
(대/소문자 구분) 이외의 on
값은 ActivityId 전송을 사용하지 않도록 설정합니다.
자세한 내용은 드라이버 작업 추적을 참조하세요. 이 추적 플래그는 해당 JDBC 개체 로거와 함께 사용되어 JDBC 드라이버의 ActivityId를 추적하고 전송할지 여부를 결정합니다. Logging.Properties 파일을 업데이트하는 것 외에도 FINER 이상에서 로거 com.microsoft.sqlserver.jdbc를 사용하도록 설정합니다. 특정 클래스에서 생성된 요청에 대해 ActivityId를 서버로 전송하려는 경우 해당 클래스 로거는 FINER 또는 FINEST로 설정되어야 합니다. 예를 들어 클래스가 SQLServerStatement인 경우 로거 com.microsoft.sqlserver.jdbc.SQLServerStatement를 사용하도록 설정합니다.
다음 샘플에서는 Transact-SQL을 사용하여 링 버퍼에 저장되고 RPC 및 일괄 처리 작업 시 클라이언트에서 전송된 작업 ID를 기록하는 확장 이벤트 세션을 시작합니다.
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)