Uso da exibição do ExecutionLog e do ExecutionLog3 no Reporting Services

O log de execução do servidor de relatório do Reporting Services contém informações sobre os relatórios executados no servidor ou em vários servidores. Esses servidores estão em uma implantação escalável no modo nativo ou em um farm do SharePoint. É possível usar o log de execução de relatório para descobrir:

  • O número de vezes que um relatório é solicitado.
  • Quais são os formatos de saída mais usados.
  • O tempo de processamento dedicado em cada fase de processamento em milissegundos.

Os logs contêm informações sobre o tempo dedicado na execução da consulta do conjunto de dados de um relatório e o tempo dedicado no processamento dos dados. Se você for um administrador do servidor de relatório, poderá revisar as informações de log e identificar tarefas de execução prolongada. Também é possível fazer sugestões aos autores do relatório sobre as áreas do conjunto de dados ou do relatório de processamento que podem ser melhoradas.

Os servidores de relatórios configurados para o modo do SharePoint também podem usar os logs do Serviço de Log Unificado (ULS, na sigla em inglês) do SharePoint. Para obter mais informações, confira Ativar eventos do Reporting Services para o log de rastreamento do SharePoint (ULS)

Exibir informações do log

O servidor de relatório registra em logs dados sobre a execução dos relatórios em uma tabela interna do banco de dados. As informações da tabela estão disponíveis nas exibições do SQL Server.

O log de execução de relatório é armazenado no banco de dados do servidor de relatório que, por padrão, é denominado ReportServer. As exibições SQL fornecem as informações do log de execução. As exibições “2” e “3” foram adicionadas em versões mais recentes e contêm novos campos, ou campos com nomes mais amigáveis em comparação com as versões anteriores. As exibições mais antigas permanecem no produto para que os aplicativos que dependem delas não sejam impactados. Se você não tem uma dependência em uma exibição mais antiga, por exemplo, ExecutionLog, use a exibição mais recente, ExecutionLog3.

Definições de configuração de um servidor de relatório no modo SharePoint

Você pode ativar ou desativar a execução de relatório nas configurações de sistema de um aplicativo de serviço Reporting Services.

Por padrão, as entradas de log são mantidas por 60 dias. Entradas que excedem essa data são removidas às 2h, operação realizada diariamente. Em uma instalação madura, somente 60 dias de informações estão disponíveis em um dado momento.

Não é possível definir limites para o número de linhas ou o tipo de entradas registradas.

Habilitar o registro em logs da execução para um servidor do SharePoint

  1. Na Administração Central do SharePoint, selecione Gerenciar aplicativos de serviço no grupo Gerenciamento de Aplicativo.

  2. Escolhao nome do aplicativo de serviço do Reporting Services a ser configurado.

  3. Selecione Configurações do Sistema.

  4. Selecione Habilitar Log de Execução na seção Log .

  5. Selecione OK.

Habilitar o registro em logs detalhado para um servidor do SharePoint

É necessário habilitar o log conforme descrito nas etapas anteriores e concluir as etapas a seguir:

  1. Na página Configurações do Sistema do aplicativo de serviços Reporting Services, localize a seção Definido pelo usuário.

  2. Altere o ExecutionLogLevel para detalhado. Esse é um campo de entrada de texto, e os dois valores possíveis são detalhado e normal.

Definições de configuração de um servidor de relatório no modo nativo

Você pode ativar ou desativar o log de execução de relatório na página de Propriedades do Servidor do SQL Server Management Studio. O EnableExecutionLogging é uma propriedade avançada.

Por padrão, as entradas de log são mantidas por 60 dias. Entradas que excedem essa data são removidas às 2h, operação realizada diariamente. Em uma instalação madura, somente 60 dias de informações estão disponíveis em um dado momento.

Não é possível definir limites para o número de linhas ou o tipo de entradas registradas.

Habilitar o registro em logs da execução para um servidor no modo nativo

  1. Inicie o SQL Server Management Studio com privilégios administrativos. Por exemplo, clique com o botão direito do mouse no ícone do Management Studio e selecione Executar como administrador.

  2. Conecte-se ao servidor de relatório desejado.

  3. Clique com o botão direito do mouse no nome do servidor e selecione Propriedades. Se a opção Propriedades for desabilitada, verifique se você executou o SQL Server Management Studio com privilégios administrativos.

  4. Selecione a página Log.

  5. Selecione Habilitar log de execução de relatório.

Habilitar o registro em logs detalhado para um servidor no modo nativo

É necessário habilitar o log conforme descrito nas etapas anteriores e concluir as etapas a seguir:

  1. No diálogo Propriedades do Servidor, selecione a página Avançado.

  2. Na seção Definido pelo usuário , altere o ExecutionLogLevel para detalhado. Esse é um campo de entrada de texto, e os dois valores possíveis são detalhado e normal.

    Captura de tela da caixa de diálogo Propriedades do Servidor com destaque para o campo ExecutionLogLevel definido como detalhado.

Campos de log (ExecutionLog3)

Essa exibição adiciona mais nós do Performance Diagnostics na coluna AdditionalInfo, que é baseada em XML. A coluna AdditionalInfo contém uma estrutura XML de 1 para muitos campos de informação. O exemplo apresentado a seguir mostra uma instrução Transact-SQL que recupera linhas da exibição do ExecutionLog3. O exemplo presume que o nome do banco de dados do servidor de relatório seja ReportServer:

Use ReportServer  
select * from ExecutionLog3 order by TimeStart DESC  

A tabela apresentada a seguir descreve os dados que são capturados nos logs da execução do relatório.

Coluna Descrição
InstanceName Nome da instância de servidor de relatório que manipulou a solicitação. Se seu ambiente tiver mais de um servidor de relatório, você poderá analisar a distribuição de InstanceName para monitorar e determinar se o balanceador da carga de rede distribui solicitações pelos servidores de relatório conforme esperado.
ItemPath Caminho onde um relatório ou item de relatório é armazenado.
UserName Identificador do usuário.
ExecutionID O identificador interno associado a uma solicitação. Solicitações nas mesmas sessões de usuário compartilham o mesmo ID de execução.
RequestType Valores possíveis:

Interativo

Assinatura



A análise dos dados de log filtrados por RequestType=Subscription e classificados por TimeStart pode revelar períodos de uso de assinatura pesados e talvez você queira modificar algumas assinaturas de relatório para um horário diferente.
Formatar Formato de renderização.
Parâmetros Valores de parâmetro usados em uma execução de relatório.
ItemAction Valores possíveis:

Render

Sort

BookMarkNavigation

DocumentNavigation

GetDocumentMap

Findstring

Execute

RenderEdit.
TimeStart Horas de início e parada que indicam a duração de um processo de relatório.
TimeEnd
TimeDataRetrieval Número de milissegundos gastos na recuperação dos dados.
TimeProcessing Número de milissegundos gastos no processamento do relatório.
TimeRendering Número de milissegundos gastos na renderização do relatório.
Fonte Fonte da execução de relatório. Valores possíveis:

Live

Cache: indica uma execução em cache, por exemplo, consultas do conjunto de dados não são executadas ao vivo.

Instantâneo

Histórico

AdHoc: indica um relatório detalhado baseado em modelo de relatório gerado de forma dinâmica. Esse termo também pode se referir a um relatório do Report Builder que é visualizado previamente em um cliente ao usar o servidor de relatório para processamento e renderização.

Sessão: indica uma solicitação de acompanhamento em uma sessão já estabelecida. Por exemplo, a solicitação inicial é para exibir a página 1 e a solicitação de acompanhamento é exportar para o Excel com o estado de sessão atual.

Extensão de Personalização de Definição de Relatório (RDCE, na sigla em inglês): indica uma Extensão de Personalização de Definição de Relatório. Uma extensão personalizada RDCE pode personalizar uma definição de relatório dinamicamente antes da definição ser passada ao mecanismo de processamento mediante a execução do relatório.
Status Status (rsSuccess ou um código de erro; se vários erros ocorrerem, só o primeiro erro será registrado).
ByteCount Tamanho de relatórios renderizados em bytes.
RowCount Número de linhas retornadas pelas consultas.
AdditionalInfo Um conjunto de propriedades XML contendo informações adicionais sobre a execução. O conteúdo pode ser diferente para cada linha.

O campo AdditionalInfo

O campo AdditionalInfo corresponde uma estrutura ou a um recipiente de propriedades em XML que contém informações adicionais sobre a execução. O conteúdo pode ser diferente para cada linha do log.

A seguir, são apresentados exemplos do conteúdo do campo AddtionalInfo para registros em logs standard e detalhados:

Exemplo de registro em log padrão de 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>

Exemplo de registro em log detalhado de 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>

Os exemplos apresentados a seguir correspondem a alguns dos valores que você encontra no campo AdditionalInfo:

  • ProcessingEngine

    Se a maioria dos seus relatórios continuar mostrar o valor 1, você poderá investigar como projetá-los novamente para usar o mecanismo de processamento sob demanda mais recente e eficiente.

    1=SQL Server 2005, 2=The new On-demand Processing Engine
    
    <ProcessingEngine>2</ProcessingEngine>
    
  • ScalabilityTime

    O número de milissegundos gastos na execução de operações de escala relacionadas no mecanismo de processamento. O valor 0 indica que nenhuma outra hora foi gasta em operações de escala, um 0 também indica que a solicitação não está sob pressão de memória.

    <ScalabilityTime>  
        <Processing>0</Processing>  
    </ScalabilityTime>  
    
  • EstimatedMemoryUsageKB

    Uma estimativa da quantidade máxima de memória, em quilobytes, consumida por cada componente durante uma solicitação específica.

    <EstimatedMemoryUsageKB>  
        <Processing>38</Processing>  
    </EstimatedMemoryUsageKB>  
    
  • DataExtension

    Os tipos de extensões de dados ou fontes de dados usados no relatório. O número é uma contagem do número de ocorrências da fonte de dados específica.

    <DataExtension>  
       <DAX>2</DAX>  
    </DataExtension>  
    
  • ExternalImages

    O valor está em milissegundos. Esses dados podem ser usados para diagnosticar problemas de desempenho. A hora necessária para recuperar imagens de um servidor Web externo talvez torne a execução de relatório geral mais lenta.

    <ExternalImages>  
        <Count>3</Count>  
        <ByteCount>9268</ByteCount>  
        <ResourceFetchTime>9</ResourceFetchTime>  
    </ExternalImages>  
    
  • Conexões

    Uma estrutura em vários níveis

    <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>  
    
    

Campos de log (ExecutionLog2)

Esta exibição adicionou alguns campos novos e renomeou outros. A amostra apresentada a seguir corresponde a uma instrução Transact-SQL que recupera linhas da exibição do ExecutionLog2. A amostra assume que o banco de dados do servidor de relatório se chama ReportServer:

Use ReportServer  
select * from ExecutionLog2 order by TimeStart DESC  

A tabela apresentada a seguir descreve os dados que são capturados nos logs da execução do relatório.

Coluna Descrição
InstanceName Nome da instância de servidor de relatório que manipulou a solicitação.
ReportPath A estrutura de caminho para o relatório. Um relatório salvo na pasta raiz como teste tem um ReportPath de /test.

Um relatório com o nome test e salvo na pasta Samples, teria um ReportPath igual a /Samples/test/.
UserName Identificador do usuário.
ExecutionID
RequestType O tipo de solicitação é user ou system.
Formatar Formato de renderização.
Parâmetros Valores de parâmetro usados em uma execução de relatório.
ReportAction Valores possíveis: Render, Sort, BookMarkNavigation, DocumentNavigation, GetDocumentMap, Findstring.
TimeStart Hora de início que indica a duração de um processo de relatório.
TimeEnd Hora de término que indica a duração de um processo de relatório.
TimeDataRetrieval Número de milissegundos gastos na recuperação dos dados.
TimeProcessing Número de milissegundos gastos no processamento do relatório.
TimeRendering Número de milissegundos gastos na renderização do relatório.
Fonte Fonte da execução de relatório. As opções são: 1=Live, 2=Cache, 3=Snapshot e 4=History.
Status O status é rsSuccess ou um código de erro. Se vários erros ocorrerem, só o primeiro erro será registrado.
ByteCount Tamanho de relatórios renderizados em bytes.
RowCount Número de linhas retornadas pelas consultas.
AdditionalInfo Um conjunto de propriedades XML contendo informações adicionais sobre a execução.

Campos de log (ExecutionLog)

O exemplo a seguir é uma instrução Transact-SQL que recupera linhas da exibição ExecutionLog. A amostra assume que o banco de dados do servidor de relatório se chama ReportServer:

Use ReportServer  
select * from ExecutionLog order by TimeStart DESC

A tabela apresentada a seguir descreve os dados que são capturados nos logs da execução do relatório.

Coluna Descrição
InstanceName Nome da instância de servidor de relatório que manipulou a solicitação.
ReportID Identificador do relatório.
UserName Identificador do usuário.
RequestType Valores possíveis:

True = Uma solicitação de assinatura

False = Uma solicitação interativa
Formatar Formato de renderização.
Parâmetros Valores de parâmetro usados em uma execução de relatório.
TimeStart Horas de início e parada que indicam a duração de um processo de relatório.
TimeEnd
TimeDataRetrieval Número de milissegundos gastos na recuperação dos dados, no processamento do relatório e na renderização do relatório.
TimeProcessing
TimeRendering
Fonte Fonte da execução de relatório. Valores possíveis: (1=Ativo, 2=Cache, 3=Instantâneo, 4=Histórico, 5=Ad hoc, 6=Sessão, 7=RDCE).
Status Os valores possíveis são rsSuccess, rsProcessingAborted ou um código de erro. Se vários erros ocorrerem, só o primeiro erro será registrado.
ByteCount Tamanho de relatórios renderizados em bytes.
RowCount Número de linhas retornadas pelas consultas.