보고서 서버 실행 로그에는 기본 모드 스케일 아웃 배포 또는 SharePoint 팜의 서버 또는 여러 서버에서 실행되는 보고서에 대한 정보가 포함됩니다. 보고서 실행 로그를 사용하여 보고서가 요청되는 빈도, 가장 많이 사용되는 출력 형식 및 각 처리 단계에서 소요되는 처리 시간(밀리초)을 확인할 수 있습니다. 로그에는 보고서의 데이터 세트 쿼리를 실행하는 데 소요된 시간 및 데이터 처리에 소요된 시간에 대한 정보가 포함됩니다. 보고서 서버 관리자인 경우 로그 정보를 검토하고 장기 실행 작업을 식별하고 보고서 작성자에게 개선할 수 있는 보고서 영역(데이터 세트 또는 처리)을 제안할 수 있습니다.
SharePoint 모드로 구성된 보고서 서버는 SharePoint ULS 로그를 활용할 수도 있습니다. 자세한 내용은 SharePoint 추적 로그에 대한 Reporting Services 이벤트 설정(ULS)을 참조하세요.
로그 정보 보기
보고서 서버 실행은 보고서 실행에 대한 데이터를 내부 데이터베이스 테이블에 기록합니다. 테이블의 정보는 SQL Server 보기에서 사용할 수 있습니다.
보고서 실행 로그는 기본적으로 ReportServer라는 보고서 서버 데이터베이스에 저장됩니다. SQL 뷰는 실행 로그 정보를 제공합니다. "2" 및 "3" 보기는 최신 릴리스에 추가되었으며 새 필드를 포함하거나 이전 릴리스보다 친숙한 이름을 가진 필드를 포함합니다. 이전 보기는 제품에 남아 있으므로 해당 뷰에 의존하는 사용자 지정 애플리케이션은 영향을 받지 않습니다. 이전 보기(예: ExecutionLog)에 대한 의존도가 없는 경우 가장 최근 보기인 ExecutionLog3을 사용하는 것이 좋습니다.
이 주제에서는:
SharePoint 모드 보고서 서버에 대한 구성 설정
보고서 실행 로깅은 Reporting Services 서비스 애플리케이션의 시스템 설정에서 설정 또는 해제할 수 있습니다.
기본적으로 로그 항목은 60일 동안 보관됩니다. 이 날짜를 초과하는 항목은 매일 오전 2:00에 제거됩니다. 완성도 높은 설치에서는 지정된 시간에 60일의 정보만 사용할 수 있습니다.
행 수 또는 기록된 항목 유형에 대한 제한을 설정할 수 없습니다.
실행 로깅을 사용하도록 설정하려면 다음을 수행합니다.
SharePoint 중앙 관리에서 애플리케이션 관리 그룹에서 서비스 애플리케이션 관리를 클릭합니다.
구성하려는 Reporting Services 서비스 애플리케이션의 이름을 클릭합니다.
시스템 설정을 클릭합니다.
로깅 섹션에서 실행 로깅 사용을 선택합니다.
OK를 클릭합니다.
자세한 정보 로깅을 사용하도록 설정하려면 다음을 수행합니다.
이전 단계에서 설명한 대로 로깅을 사용하도록 설정한 다음 다음을 완료해야 합니다.
Reporting Services 서비스 애플리케이션의 시스템 설정 페이지에서 사용자 정의 섹션을 찾습니다.
ExecutionLogLevel 을 자세히로 변경합니다. 이 필드는 텍스트 입력 필드이며 가능한 두 값은 자세한 정보 표시와 일반 값입니다.
기본 모드 보고서 서버에 대한 구성 설정
SQL Server Management Studio의 서버 속성 페이지에서 보고서 실행 로깅을 설정하거나 해제할 수 있습니다. EnableExecutionLogging는 고급 속성입니다.
기본적으로 로그 항목은 60일 동안 보관됩니다. 이 날짜를 초과하는 항목은 매일 오전 2:00에 제거됩니다. 완성도 높은 설치에서는 지정된 시간에 60일의 정보만 사용할 수 있습니다.
행 수 또는 기록된 항목 유형에 대한 제한을 설정할 수 없습니다.
실행 로깅을 사용하도록 설정하려면 다음을 수행합니다.
관리 권한을 사용하여 SQL Server Management Studio를 시작합니다. 예를 들어 Management Studio 아이콘을 마우스 오른쪽 단추로 클릭하고 '관리자 권한으로 실행'을 클릭합니다.
원하는 보고서 서버에 연결합니다.
서버 이름을 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. 속성 옵션을 사용하지 않도록 설정한 경우 관리 권한으로 SQL Server Management Studio를 실행했는지 확인합니다.
로깅 페이지를 클릭합니다.
보고서 실행 로깅 사용을 선택합니다.
자세한 정보 로깅을 사용하도록 설정하려면 다음을 수행합니다.
이전 단계에서 설명한 대로 로깅을 사용하도록 설정한 다음 다음을 완료해야 합니다.
서버 속성 대화 상자에서 고급 페이지를 클릭합니다.
사용자 정의 섹션에서 ExecutionLogLevel 을 자세히로 변경합니다. 이 필드는 텍스트 입력 필드이며 가능한 두 값은 자세한 정보 표시와 일반 값입니다.
로그 필드(ExecutionLog3)
이 보기는 XML 기반 AdditionalInfo 열 내에 추가 성능 진단 노드를 추가했습니다. AdditionalInfo 열에는 1~많은 추가 정보 필드의 XML 구조가 포함되어 있습니다. 다음은 ExecutionLog3 보기에서 행을 검색하는 샘플 Transact SQL 문입니다. 이 샘플에서는 보고서 서버 데이터베이스의 이름이 ReportServer라고 가정합니다.
Use ReportServer
select * from ExecutionLog3 order by TimeStart DESC
다음 표에서는 보고서 실행 로그에 캡처된 데이터에 대해 설명합니다.
| 칼럼 | 설명 |
|---|---|
| 인스턴스 이름 | 요청을 처리한 보고서 서버 인스턴스의 이름입니다. 환경에 둘 이상의 보고서 서버가 있는 경우 InstanceName 배포를 분석하여 네트워크 부하 분산 장치가 예상대로 보고서 서버에 요청을 분산하는지 모니터링하고 확인할 수 있습니다. |
| 아이템 경로 | 보고서 또는 보고서 항목이 저장되는 위치의 경로입니다. |
| 사용자 이름 | 사용자 식별자입니다. |
| 실행ID | 요청과 연결된 내부 식별자입니다. 동일한 사용자 세션의 요청은 동일한 실행 ID를 공유합니다. |
| 요청 유형 | 가능한 값: 대화형 구독 RequestType=Subscription으로 필터링되고 TimeStart별로 정렬된 로그 데이터를 분석하면 구독 사용량이 많은 기간이 표시될 수 있으며 일부 보고서 구독을 다른 시간으로 수정할 수 있습니다. |
| 포맷 | 렌더링 형식 |
| 매개 변수 | 보고서 실행에 사용되는 매개 변수 값입니다. |
| 항목작업 | 가능한 값: 렌더링 정렬 BookMarkNavigation DocumentNavigation GetDocumentMap Findstring 실행 RenderEdit |
| TimeStart | 보고 프로세스의 기간을 나타내는 시작 및 종료 시간입니다. |
| 시간 종료 | |
| 시간 데이터 검색 | 데이터를 검색하는 데 소요된 시간(밀리초)입니다. |
| 시간처리 | 보고서를 처리하는 데 소요된 시간(밀리초)입니다. |
| 시간 렌더링 | 보고서를 렌더링하는 데 소요된 시간(밀리초)입니다. |
| 출처 | 보고서 실행의 원본입니다. 가능한 값: 라이브 캐시: 캐시된 실행을 나타냅니다. 예를 들어 데이터 세트 쿼리는 라이브로 실행되지 않습니다. 스냅샷 역사 AdHoc : 동적으로 생성된 보고서 모델 기반 드릴스루 보고서 또는 처리 및 렌더링을 위해 보고서 서버를 활용하는 클라이언트에서 미리 볼 수 있는 보고서 작성기 보고서를 나타냅니다. 세션: 이미 설정된 세션 내에서 후속 요청을 나타냅니다. 예를 들어 초기 요청은 페이지 1을 보는 것이며, 후속 요청은 현재 세션 상태를 사용하여 Excel로 내보내는 것입니다. Rdce: 보고서 정의 사용자 지정 확장을 나타냅니다. RDCE 사용자 지정 확장은 보고서 실행 시 처리 엔진에 전달되기 전에 보고서 정의를 동적으로 사용자 지정할 수 있습니다. |
| 상태 | 상태(rsSuccess 또는 오류 코드: 여러 개의 오류가 발생하면 첫 번째 오류만 기록됨) |
| 바이트 수 | 렌더링된 보고서의 크기(바이트)입니다. |
| 행 개수 (RowCount) | 쿼리에서 반환된 행 수입니다. |
| 추가 정보 | 실행에 대한 추가 정보를 포함하는 XML 속성 모음입니다. 각 행에 대해 콘텐츠가 다를 수 있습니다. |
AdditionalInfo의 필드
AdditionalInfo 필드는 실행에 대한 추가 정보를 포함하는 XML 속성 모음 또는 구조체입니다. 로그의 각 행에 대해 콘텐츠가 다를 수 있습니다.
다음 표는 표준 및 자세한 정보 로깅 모두에 대한 AddtionalInfo 필드의 내용 예제입니다.
AddtionalInfo의 표준 로깅 예제
<AdditionalInfo>
<ProcessingEngine>2</ProcessingEngine>
<ScalabilityTime>
<Pagination>0</Pagination>
<Processing>0</Processing>
</ScalabilityTime>
<EstimatedMemoryUsageKB>
<Pagination>0</Pagination>
<Processing>6</Processing>
</EstimatedMemoryUsageKB>
<DataExtension>
<SQL>1</SQL>
</DataExtension>
<Connections>
<Connection>
<ConnectionOpenTime>147</ConnectionOpenTime>
<DataSets>
<DataSet>
<Name>DataSet1</Name>
<RowsRead>16</RowsRead>
<TotalTimeDataRetrieval>642</TotalTimeDataRetrieval>
<ExecuteReaderTime>63</ExecuteReaderTime>
</DataSet>
<DataSet>
<Name>DataSet2</Name>
<RowsRead>3</RowsRead>
<TotalTimeDataRetrieval>157</TotalTimeDataRetrieval>
<ExecuteReaderTime>60</ExecuteReaderTime>
</DataSet>
</DataSets>
</Connection>
</Connections>
</AdditionalInfo>
AdditionalInfo의 자세한 로깅 예제
<AdditionalInfo>
<ProcessingEngine>2</ProcessingEngine>
<ScalabilityTime>
<Pagination>0</Pagination>
<Processing>0</Processing>
</ScalabilityTime>
<EstimatedMemoryUsageKB>
<Pagination>0</Pagination>
<Processing>6</Processing>
</EstimatedMemoryUsageKB>
<DataExtension>
<SQL>1</SQL>
</DataExtension>
<Connections>
<Connection>
<ConnectionOpenTime>127</ConnectionOpenTime>
<DataSource>
<Name>DataSource1</Name>
<DataExtension>SQL</DataExtension>
</DataSource>
<DataSets>
<DataSet>
<Name>DataSet1</Name>
<RowsRead>16</RowsRead>
<TotalTimeDataRetrieval>655</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>94</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>33</ExecuteReaderTime>
<DataReaderMappingTime>30</DataReaderMappingTime>
<DisposeDataReaderTime>1</DisposeDataReaderTime>
</DataSet>
<DataSet>
<Name>DataSet2</Name>
<RowsRead>3</RowsRead>
<TotalTimeDataRetrieval>16</TotalTimeDataRetrieval>
<QueryPrepareAndExecutionTime>2</QueryPrepareAndExecutionTime>
<ExecuteReaderTime>1</ExecuteReaderTime>
<DataReaderMappingTime>0</DataReaderMappingTime>
<DisposeDataReaderTime>0</DisposeDataReaderTime>
</DataSet>
</DataSets>
</Connection>
</Connections>
</AdditionalInfo>
다음은 AdditionalInfo 필드에 표시되는 몇 가지 속성에 대해 설명합니다.
ProcessingEngine: 1=SQL Server 2005, 2=새 주문형 처리 엔진입니다. 대부분의 보고서에서 여전히 값이 1인 경우 최신의 보다 효율적인 주문형 처리 엔진을 활용하도록 다시 디자인하는 방법을 조사할 수 있습니다.
<ProcessingEngine>2</ProcessingEngine>ScalabilityTime: 처리 엔진에서 크기 조정 관련 작업을 수행하는 데 소요된 시간(밀리초)입니다. 값이 0이면 크기 조정 작업에 추가 시간이 소요되지 않았으며 0은 요청이 메모리 압력을 받지 않음을 나타냅니다.
<ScalabilityTime> <Processing>0</Processing> </ScalabilityTime>EstimatedMemoryUsageKB: 특정 요청 중에 각 구성 요소에서 사용하는 최대 메모리 양(킬로바이트)의 추정치입니다.
<EstimatedMemoryUsageKB> <Processing>38</Processing> </EstimatedMemoryUsageKB>DataExtension: 보고서에 사용되는 데이터 확장 프로그램 또는 데이터 원본의 형식입니다. 이 숫자는 특정 데이터 원본의 발생 횟수입니다.
<DataExtension> <DAX>2</DAX> </DataExtension>ExternalImages값은 밀리초입니다. 이 데이터를 사용하여 성능 문제를 진단할 수 있습니다. 외부 웹 서버에서 이미지를 검색하는 데 필요한 시간은 전체 보고서 실행 속도가 느려질 수 있습니다. SQL Server 2012에 추가되었습니다.
<ExternalImages> <Count>3</Count> <ByteCount>9268</ByteCount> <ResourceFetchTime>9</ResourceFetchTime> </ExternalImages>연결: 다단계 구조체입니다. SQL Server 2012에 추가되었습니다.
<Connections> <Connection> <ConnectionOpenTime>127</ConnectionOpenTime> <DataSource> <Name>DataSource1</Name> <DataExtension>SQL</DataExtension> </DataSource> <DataSets> <DataSet> <Name>DataSet1</Name> <RowsRead>16</RowsRead> <TotalTimeDataRetrieval>655</TotalTimeDataRetrieval> <QueryPrepareAndExecutionTime>94</QueryPrepareAndExecutionTime> <ExecuteReaderTime>33</ExecuteReaderTime> <DataReaderMappingTime>30</DataReaderMappingTime> <DisposeDataReaderTime>1</DisposeDataReaderTime> </DataSet> <DataSet> <Name>DataSet2</Name> <RowsRead>3</RowsRead> <TotalTimeDataRetrieval>16</TotalTimeDataRetrieval> <QueryPrepareAndExecutionTime>2</QueryPrepareAndExecutionTime> <ExecuteReaderTime>1</ExecuteReaderTime> <DataReaderMappingTime>0</DataReaderMappingTime> <DisposeDataReaderTime>0</DisposeDataReaderTime> </DataSet> </DataSets> </Connection> </Connections>
로그 필드(ExecutionLog2)
이 보기는 몇 가지 새 필드를 추가하고 몇 가지 다른 필드의 이름을 변경했습니다. 다음은 ExecutionLog2 보기에서 행을 검색하는 샘플 Transact SQL 문입니다. 이 샘플에서는 보고서 서버 데이터베이스의 이름이 ReportServer라고 가정합니다.
Use ReportServer
select * from ExecutionLog2 order by TimeStart DESC
다음 표에서는 보고서 실행 로그에 캡처된 데이터에 대해 설명합니다.
| 칼럼 | 설명 |
|---|---|
| 인스턴스 이름 | 요청을 처리한 보고서 서버 인스턴스의 이름입니다. |
| ReportPath | 보고서에 대한 경로 구조입니다. 예를 들어 보고서 관리자의 루트 폴더에 있는 "test"라는 보고서에는 "/test"라는 ReportPath가 있습니다. 보고서 관리자의 "samples" 폴더에 저장된 "test"라는 보고서에는 ReportPath의 "/Samples/test/"가 있습니다. |
| 사용자 이름 | 사용자 식별자입니다. |
| 실행ID | |
| 요청 유형 | 요청 유형(사용자 또는 시스템)입니다. |
| 포맷 | 렌더링 형식 |
| 매개 변수 | 보고서 실행에 사용되는 매개 변수 값입니다. |
| ReportAction | 가능한 값: Render, Sort, BookMarkNavigation, DocumentNavigation, GetDocumentMap, Findstring |
| 시작 시간 | 보고 프로세스의 기간을 나타내는 시작 및 종료 시간입니다. |
| 종료 시점 | |
| 시간데이터검색 | 데이터를 검색하고, 보고서를 처리하고, 보고서를 렌더링하는 데 소요된 시간(밀리초)입니다. |
| 시간 처리 | |
| 시간 렌더링 | |
| 출처 | 보고서 실행 원본(1=Live, 2=Cache, 3=Snapshot, 4=History). |
| 상태 | 상태(rsSuccess 또는 오류 코드: 여러 개의 오류가 발생하면 첫 번째 오류만 기록됨) |
| 바이트 수 | 렌더링된 보고서의 크기(바이트)입니다. |
| 행 개수 (RowCount) | 쿼리에서 반환된 행 수입니다. |
| 추가 정보 | 실행에 대한 추가 정보를 포함하는 XML 속성 모음입니다. |
로그 필드(ExecutionLog)
다음은 ExecutionLog 보기에서 행을 검색하는 샘플 Transact SQL 문입니다. 이 샘플에서는 보고서 서버 데이터베이스의 이름이 ReportServer라고 가정합니다.
Use ReportServer
select * from ExecutionLog order by TimeStart DESC
다음 표에서는 보고서 실행 로그에 캡처된 데이터에 대해 설명합니다.
| 칼럼 | 설명 |
|---|---|
| 인스턴스 이름 | 요청을 처리한 보고서 서버 인스턴스의 이름입니다. |
| ReportID | 보고서 식별자입니다. |
| 사용자 이름 | 사용자 식별자입니다. |
| 요청 유형 | 가능한 값: True = 구독 요청 False= 대화형 요청 |
| 포맷 | 렌더링 형식 |
| 매개 변수 | 보고서 실행에 사용되는 매개 변수 값입니다. |
| 타임스타트 | 보고 프로세스의 기간을 나타내는 시작 및 종료 시간입니다. |
| 시간종료 | |
| 시간 데이터 검색 | 데이터를 검색하고, 보고서를 처리하고, 보고서를 렌더링하는 데 소요된 시간(밀리초)입니다. |
| 시간 처리 과정 | |
| 시간 렌더링 | |
| 출처 | 보고서 실행의 원본입니다. 가능한 값: (1=Live, 2=Cache, 3=Snapshot, 4=History, 5=Adhoc, 6=Session, 7=RDCE) |
| 상태 | 가능한 값: rsSuccess, rsProcessingAborted 또는 오류 코드입니다. 여러 오류가 발생한 경우 첫 번째 오류만 기록됩니다. |
| 바이트 개수 | 렌더링된 보고서의 크기(바이트)입니다. |
| 행 개수 (RowCount) | 쿼리에서 반환된 행 수입니다. |
또한 참조하십시오
ULS(SharePoint 추적 로그)에 대한 Reporting Services 이벤트 켜기
Reporting Services 로그 파일 및 원본
오류 및 이벤트 참조(Reporting Services)