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 em modo nativo e escalonável ou em uma fazenda 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 SharePoint também podem utilizar os logs do Serviço de Log Unificado do SharePoint (sigla em inglês: ULS). 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 armazena logs de dados da execução de 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 relação às versões anteriores. As exibições mais antigas permanecem no produto para que os aplicativos que dependem delas não sejam afetados. Se você não tem uma dependência de 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, todos os dias. 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 Registro de Execução na seção Registros.

  5. Selecione OK.

Habilitar o log detalhado para um servidor do SharePoint

É necessário habilitar o registro conforme descrito nas etapas anteriores e, em seguida, 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 parâmetro ExecutionLogLevel para verbose. 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 esta data são removidas às 2:00 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 de execução para um servidor em 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 Registro.

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

Habilitar logagem detalhada para um servidor em modo nativo

É necessário habilitar o registro conforme descrito nas etapas anteriores e, em seguida, 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)

Esta visualização adiciona mais nós de diagnóstico de desempenho dentro da coluna AdditionalInfo, em formato XML. A coluna AdditionalInfo contém uma estrutura XML de 1 para muitos campos de informação. O exemplo a seguir mostra uma instrução Transact-SQL que recupera linhas da exibição 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
Nome da Instância 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.
TipoDeRequisição 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 intenso de assinaturas, e talvez você queira modificar alguns agendamentos de relatórios para um momento diferente.
Formato Formato de renderização.
Parâmetros Valores de parâmetro usados em uma execução de relatório.
AçãoDoItem 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.
Processamento de Tempo 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:

Ao Vivo

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.
Informações Adicionais 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 estão exemplos do conteúdo do campo AdditionalInfo para registro em log padrão e detalhado:

Exemplo de registro em log padrão 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>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 relacionadas à escala no mecanismo de processamento. Um valor de 0 indica que nenhum outro tempo foi gasto em operações de escala e 0 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 visualização adicionou alguns campos novos e renomeou alguns outros campos. O exemplo a seguir é uma instrução Transact-SQL que recupera linhas da exibição 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
Nome da Instância 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
TipoDeRequisição O tipo de solicitação é user ou system.
Formato 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.
Processamento de Tempo 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.
Informações Adicionais 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
Nome da Instância Nome da instância de servidor de relatório que manipulou a solicitação.
ReportID Identificador do relatório.
UserName Identificador do usuário.
TipoDeRequisição Valores possíveis:

True = Uma solicitação de assinatura

False = Uma solicitação interativa
Formato 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.
Processamento de Tempo
TimeRendering
Fonte Fonte da execução de relatório. Valores possíveis: (1=Ao Vivo, 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.