다음을 통해 공유


SQL Server Profiler를 사용하여 추적 보기 및 분석

적용 대상: SQL Server Azure SQL Managed Instance

SQL Server Profiler를 사용하여 추적에서 캡처된 이벤트 데이터를 볼 수 있습니다. SQL Server Profiler는 정의된 추적 속성을 기반으로 데이터를 표시합니다. SQL Server 데이터를 분석하는 한 가지 방법은 SQL Server 또는 데이터베이스 엔진 튜닝 관리자 같은 다른 프로그램에 데이터를 복사하는 것입니다. 데이터베이스 엔진 튜닝 관리자는 Text 데이터 열이 추적에 포함되어 있는 경우 SQL 일괄 처리와 RPC(원격 프로시저 호출) 이벤트가 있는 추적 파일을 사용할 수 있습니다. 데이터베이스 엔진 튜닝 관리자에 사용할 수 있도록 올바른 이벤트와 열이 캡처되었는지 확인하려면 SQL Server Profiler에서 제공되는 사전 정의된 튜닝 템플릿을 사용합니다.

SQL Server Profiler를 사용하여 추적을 열 때 추적 파일이 SQL Server Profiler 또는 SQL 추적 시스템 저장 프로시저로 생성된 경우 추적 파일에 .trc 파일 확장명이 없어도 됩니다.

참고

SQL Server Profiler는 SQL 추적 .log 파일 및 일반 SQL 스크립트 파일을 읽을 수도 있습니다. trace.txt 같은 .log 파일 확장명이 없는 SQL 추적 .log 파일을 열 때 SQLTrace_Log 파일 형식으로 지정합니다.

추적 분석을 지원하도록 SQL Server Profiler 날짜 및 시간 표시 형식을 구성할 수 있습니다.

데이터 문제 해결

SQL Server Profiler를 사용하면 추적 또는 추적 파일을 기간, CPU, 읽기 또는 쓰기 데이터 열별로 그룹화하여 데이터 문제를 해결할 수 있습니다. 문제를 해결할 수 있는 데이터의 예로는 제대로 수행되지 않거나 매우 많은 수의 논리적 읽기 작업이 있는 쿼리가 있습니다.

추적을 테이블에 저장하고 Transact-SQL을 사용하여 이벤트 데이터를 쿼리하면 추가 정보를 얻을 수 있습니다. 예를 들어 대기 시간이 과도한 SQL:BatchCompleted 이벤트를 확인하려면 다음을 실행합니다.

SELECT  TextData, Duration, CPU  
FROM    trace_table_name  
WHERE   EventClass = 12 -- SQL:BatchCompleted events  
AND     CPU < (Duration * 1000)  

참고

서버는 이벤트 기간을 마이크로초(100만 초 또는 10-6초)로 보고하고 이벤트에 사용된 CPU 시간(10000초 또는 10-3초)을 보고합니다. SQL Server Profiler 그래픽 사용자 인터페이스는 기본적으로 Duration 열을 밀리초 단위로 표시하지만 추적을 파일이나 데이터베이스 테이블에 저장하면 Duration 열 값이 마이크로초 단위로 기록됩니다. 이러한 측정값은 T-SQL(Transact-SQL) 쿼리에 대한 것입니다.

추적을 볼 때 개체 이름 표시

개체 식별자(개체 ID)가 아닌 개체의 이름을 표시하려면 개체 이름 데이터 열과 함께 서버 이름데이터베이스 ID 데이터 열을 캡처해야 합니다.

마찬가지로 개체 ID 데이터 열을 기준으로 그룹화하도록 선택하려는 경우 서버 이름데이터베이스 ID 데이터 열을 기준으로 그룹화한 다음 개체 ID 데이터 열을 기준로 그룹화합니다. 마찬가지로 인덱스 ID 데이터 열로 그룹화하도록 선택한 경우 서버 이름, 데이터베이스 ID개체 ID 데이터 열로 그룹화한 다음 인덱스 ID 데이터 열로 그룹화합니다. 개체 및 인덱스 ID는 서버 및 데이터베이스에서(그리고 인덱스 ID의 경우 개체에서) 고유하지 않으므로 이 순서로 그룹화해야 합니다.

추적 내에서 특정 이벤트 찾기

추적에서 이벤트를 찾아 그룹화하려면 다음 단계를 수행합니다.

  1. 추적을 만듭니다.

    • 추적을 정의할 때 캡처하려는 다른 데이터 열 외에도 이벤트 클래스, ClientProcessID시작 시간 데이터 열을 캡처합니다. 자세한 내용은 추적 만들기(SQL Server Profiler)를 참조하세요.

    • 캡처된 데이터를 이벤트 클래스 데이터 열 별로 그룹화하고 추적을 파일 또는 테이블에 캡처합니다. 캡처된 데이터를 그룹화하려면 추적 속성 대화 상자의 이벤트 선택 탭에서 열 구성 을 클릭합니다. 자세한 내용은 표시된 열 추적으로 구성(SQL Server Profiler)을 참조하세요.

    • 추적을 시작하고 적절한 시간이 지났거나 이벤트 수가 캡처된 후 추적을 중지합니다.

  2. 대상 이벤트를 찾습니다.

    • 추적 파일이나 테이블을 열고 Deadlock Chain과 같은 원하는 이벤트 클래스의 노드를 확장하십시오. 자세한 내용은 추적 파일 열기(SQL Server Profiler) 또는 추적 테이블 열기(SQL Server Profiler)를 참조하세요.

    • 확인할 이벤트를 찾을 때까지 추적 데이터를 검색합니다.(SQL Server Profiler에서 편집 메뉴의 찾기 명령을 사용하면 추적에서 값을 찾는데 도움이 됩니다.) 추적하는 이벤트의 ClientProcessID시작 시간 데이터 열의 값을 확인합니다.

  3. 이벤트를 컨텍스트에 표시합니다.

    • 추적 속성을 표시하고 이벤트 클래스 데이터 열이 아닌 ClientProcessID 데이터 열 별로 그룹화합니다.

    • 보려고 하는 각 연결 ID의 노드를 확장하십시오. 추적을 수동으로 검색하거나 찾기를 사용하여 이전에 메모한 대상 이벤트의 StartTime값을 찾으십시오. 이벤트는 선택한 각 클라이언트 프로세스 ID에 속하는 다른 이벤트와 함께 시간 순서대로 표시됩니다. 예를 들어 추적 내에서 캡처된 교착 상태교착 상태 Chain 이벤트는 확장된 클라이언트 프로세스 ID 내의 SQL:BatchStarting이벤트 바로 후에 나타납니다.

동일한 기술을 사용하여 그룹화된 이벤트를 찾을 수 있습니다. 검색하는 이벤트를 찾으면 ClientProcessID, ApplicationName 또는 다른 이벤트 클래스별로 그룹화하여 관련 활동을 시간순으로 봅니다.

추가 참고