Utilize o ExecutionLog e a view ExecutionLog3 nos Serviços de Relatórios

O registo de execução do servidor de relatórios Reporting Services contém informações sobre os relatórios que executam no servidor ou em múltiplos servidores. Estes servidores estão em modo nativo numa implementação em escala ou num farm do SharePoint. Pode usar o registo de execução de relatórios para descobrir:

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

O registo contém informações sobre o tempo gasto a executar a consulta ao conjunto de dados de um relatório e o tempo gasto a processar os dados. Se for administrador de um servidor de relatórios, pode rever a informação do registo e identificar tarefas de longa duração. Também pode fazer sugestões aos autores do relatório sobre as áreas do conjunto de dados ou do relatório de processamento que possam conseguir melhorar.

Os servidores de relatórios configurados para o modo SharePoint também podem utilizar os registos do SharePoint Unified Logging Service (ULS). Para obter mais informações, consulte Ativar eventos do Reporting Services para o log de rastreamento do SharePoint (ULS)

Ver informação de registo

O servidor de relatórios regista dados sobre execução de relatórios numa tabela interna de base de dados. A informação da tabela está disponível nas vistas do SQL Server.

O registo de execução de relatórios é armazenado na base de dados do servidor de relatórios, que por defeito se chama ReportServer. As vistas SQL fornecem a informação do registo de execução. As vistas "2" e "3" foram adicionadas em versões mais recentes e contêm novos campos, ou contêm campos com nomes mais amigáveis do que as versões anteriores. As vistas mais antigas permanecem no produto para que as aplicações personalizadas que dependem delas não sejam afetadas. Se não tiver uma dependência de uma vista mais antiga, por exemplo o ExecutionLog, deve usar a vista mais recente, ExecutionLog3.

Definições de configuração para um servidor de relatórios em modo SharePoint

Pode ativar ou desativar o registo de execução de relatórios a partir das definições do sistema de uma aplicação de serviço Reporting Services.

Por defeito, as entradas de registo são mantidas durante 60 dias. As inscrições que excedam esta data são removidas às 2:00 da manhã todos os dias. Numa instalação madura, apenas 60 dias de informação estão disponíveis em qualquer momento.

Não podes definir limites ao número de linhas ou ao tipo de entradas registadas.

Ativar o registo de execução para um servidor SharePoint

  1. A partir SharePoint Administração Central, selecione Gerir aplicações de serviço no grupo Gestão de Aplicações.

  2. Escolha o nome da aplicação de serviço Reporting Services que pretende configurar.

  3. Selecione Definições do Sistema.

  4. Selecione Ativar Registo de Execução na secção de Registo .

  5. Selecione OK.

Ativar o registo detalhado num servidor SharePoint

Precisa de ativar o registo conforme descrito nos passos anteriores e depois completar os seguintes passos:

  1. Na página Definições do Sistema da sua aplicação de serviços de Reporting Services, encontre a secção User-defined.

  2. Altere o ExecutionLogLevel para verbose. Este campo é um campo de entrada de texto e os dois valores possíveis são verboso e normal.

Definições de configuração para um servidor de relatórios em modo nativo

Pode ativar ou desligar o registo de execução de relatórios na página de Propriedades do Servidor no SQL Server Management Studio. O EnableExecutionLogging é uma propriedade avançada.

Por defeito, as entradas de registo são mantidas durante 60 dias. As inscrições que excedam esta data são removidas às 2:00 da manhã todos os dias. Numa instalação madura, apenas 60 dias de informação estão disponíveis em cada momento.

Não podes definir limites ao número de linhas ou ao tipo de entradas registadas.

Ativar o registo 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 no ícone do Management Studio e selecione Executar como administrador.

  2. Liga-te ao servidor de relatórios desejado.

  3. Clique com o botão direito do rato no nome do servidor e selecione Propriedades. Se a opção Properties estiver desativada, verifique se executou SQL Server Management Studio com privilégios administrativos.

  4. Selecione a página de Registo .

  5. Selecione Ativar Registo de execução de relatório.

Ativar o registo verbose para um servidor em modo nativo

Precisa de ativar o registo conforme descrito nos passos anteriores e depois completar os seguintes passos:

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

  2. Na secção Definida pelo Utilizador , altere o ExecutionLogLevel para verboso. Este campo é um campo de entrada de texto e os dois valores possíveis são verboso e normal.

    Captura de ecrã da caixa de diálogo Propriedades do Servidor que destaca o campo ExecutionLogLevel definido como verboso.

Campos de log (ExecutionLog3)

Esta vista adiciona mais nós de diagnóstico de desempenho dentro da coluna AdditionalInfo baseada em XML. A coluna InformaçãoAdicional contém uma estrutura XML de um para vários campos de informação. O exemplo seguinte mostra uma instrução Transact-SQL que recupera linhas da vista ExecutionLog3. O exemplo assume que a base de dados do servidor de relatórios se chama ReportServer:

Use ReportServer  
select * from ExecutionLog3 order by TimeStart DESC  

A tabela seguinte descreve os dados capturados no registo de execução do relatório.

Column Description
Nome da Instância Nome da instância do servidor de relatórios que tratou do pedido. Se o seu ambiente tiver mais do que um servidor de relatórios, pode analisar a distribuição InstanceName para monitorizar e determinar se o seu balanceador de carga de rede distribui pedidos entre servidores de relatórios conforme esperado.
CaminhoDoItem Percurso onde um relatório ou item de relatório é armazenado.
Nome de Utilizador Identificador do utilizador.
ExecutionID O identificador interno associado a um pedido. Pedidos nas mesmas sessões de utilizador partilham o mesmo ID de execução.
Tipo de solicitação Valores possíveis:

Interativo

Subscription



Analisar os dados de registo filtrados por RequestType=Subscription e ordenados por TimeStart pode revelar períodos de uso intensivo de subscrições, e poderá querer modificar algumas das subscrições do relatório para um horário diferente.
Formato Formato de renderização.
Parâmetros Valores de parâmetros usados para a execução de um relatório.
ItemAction Valores possíveis:

Render

Sort

BookMarkNavigation

DocumentNavigation

GetDocumentMap

Findstring

Execute

RenderEdit.
HoraDeInício Tempos de início e fim que indicam a duração do processo de relatório.
FimDoTempo
TimeDataRetrieval Número de milissegundos gastos na recuperação dos dados.
Processamento de Tempo Número de milissegundos passados a processar o relatório.
TimeRendering Número de milissegundos gastos a renderizar o relatório.
Source Fonte da execução do relatório. Valores possíveis:

Ao vivo

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

Snapshot

History

AdHoc: Indica um modelo de relatório gerado dinamicamente baseado em drill through report. Também pode referir-se a um relatório do Report Builder que é pré-visualizado num cliente que utiliza o servidor de relatórios para processamento e renderização.

Sessão: Indica um pedido de seguimento dentro de uma sessão já estabelecida. Por exemplo, o pedido inicial é para visualizar a página 1, e o pedido de seguimento é exportar para o Excel com o estado atual da sessão.

Extensão de Personalização de Definição de Relatórios (RDCE): Indica uma Extensão de Personalização de Definição de Relatório. Uma extensão personalizada RDCE pode personalizar dinamicamente uma definição de relatório antes de esta ser passada para o motor de processamento aquando da execução do relatório.
Situação Estado (seja rsSuccess ou um código de erro; se ocorrerem múltiplos erros, apenas o primeiro erro é registado).
ByteCount Tamanho dos relatórios renderizados em bytes.
Número de Linhas Número de linhas retornadas de consultas.
AdditionalInfo Um saco 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 é um saco ou estrutura de propriedades XML que contém informação adicional sobre a execução. O conteúdo pode ser diferente para cada linha do registo.

Seguem-se exemplos dos conteúdos do campo AdditionalInfo tanto para registros padrão como detalhados:

Exemplo de registo padrão do 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 registo verboso do 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 seguintes exemplos são alguns dos valores que vê no campo AdditionalInfo :

  • ProcessingEngine

    Se a maioria dos seus relatórios ainda mostrar o valor de 1, pode investigar como os redesenhar para que utilizem o motor de processamento on-demand, 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 ao realizar operações relacionadas à escala no motor de processamento. Um valor de 0 indica que nenhum tempo adicional foi gasto em operações de escala e 0 indica que o pedido não está sob pressão de memória.

    <ScalabilityTime>  
        <Processing>0</Processing>  
    </ScalabilityTime>  
    
  • EstimadaMemóriaUtilizaçãoKB

    Uma estimativa da quantidade máxima de memória, em kilobytes, consumida por cada componente durante um pedido específico.

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

    Os tipos de extensões de dados ou fontes de dados utilizadas no relatório. O número é uma contagem do número de ocorrências da fonte de dados em questão.

    <DataExtension>  
       <DAX>2</DAX>  
    </DataExtension>  
    
  • ImagensExternas

    O valor é em milissegundos. Estes dados podem ser usados para diagnosticar problemas de desempenho. O tempo necessário para recuperar imagens de um servidor web externo pode atrasar a execução geral do relatório.

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

    Uma estrutura de 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 perspetiva adicionou alguns campos novos e renomeou alguns outros. O exemplo seguinte é uma instrução Transact-SQL que recupera linhas da vista ExecutionLog2. O exemplo assume que a base de dados do servidor de relatórios se chama ReportServer:

Use ReportServer  
select * from ExecutionLog2 order by TimeStart DESC  

A tabela seguinte descreve os dados capturados no registo de execução do relatório.

Column Description
Nome da Instância Nome da instância do servidor de relatórios que tratou do pedido.
ReportPath A estrutura do caminho até ao relatório. Um relatório guardado na pasta raiz como test, tem um Caminho de Relatório de /test.

Um relatório chamado test , que está guardado na pasta Samples, teria um ReportPath de /Samples/test/.
Nome de Utilizador Identificador do utilizador.
ExecutionID
Tipo de solicitação O tipo de pedido é user ou system.
Formato Formato de renderização.
Parâmetros Valores de parâmetros usados para a execução de um relatório.
ReportAction Valores possíveis: Render, Sort, BookMarkNavigation, DocumentNavigation, GetDocumentMap, Findstring.
HoraDeInício Hora de início que indica a duração do processo de relatório.
FimDoTempo Hora de término que indica a duração do processo de relatório.
TimeDataRetrieval Número de milissegundos gastos na recuperação dos dados.
Processamento de Tempo Número de milissegundos passados a processar o relatório.
TimeRendering Número de milissegundos gastos a renderizar o relatório.
Source Fonte da execução do relatório. As opções são 1=Live, 2=Cache, 3=Snapshot, 4=History.
Situação O estado é rsSuccess ou um código de erro. Se ocorrerem múltiplos erros, apenas o primeiro erro é registado.
ByteCount Tamanho dos relatórios renderizados em bytes.
Número de Linhas Número de linhas retornadas de consultas.
AdditionalInfo Um saco de propriedades XML contendo informações adicionais sobre a execução.

Campos de registo (ExecutionLog)

O exemplo seguinte é uma instrução Transact-SQL que recupera linhas da vista ExecutionLog. O exemplo assume que a base de dados do servidor de relatórios se chama ReportServer:

Use ReportServer  
select * from ExecutionLog order by TimeStart DESC

A tabela seguinte descreve os dados capturados no registo de execução do relatório.

Column Description
Nome da Instância Nome da instância do servidor de relatórios que tratou do pedido.
ID do Relatório Identificador do relatório.
Nome de Utilizador Identificador do utilizador.
Tipo de solicitação Valores possíveis:

True = Um pedido de subscrição

False= Um pedido interativo
Formato Formato de renderização.
Parâmetros Valores de parâmetros usados para a execução de um relatório.
HoraDeInício Tempos de início e fim que indicam a duração do processo de relatório.
FimDoTempo
TimeDataRetrieval Número de milissegundos gastos a recuperar os dados, processar o relatório e renderizá-lo.
Processamento de Tempo
TimeRendering
Source Fonte da execução do relatório. Valores possíveis: (1=Live, 2=Cache, 3=Snapshot, 4=History, 5=Adhoc, 6=Session, 7=RDCE).
Situação Os valores possíveis são rsSuccess, rsProcessingAborted, ou um código de erro. Se ocorrerem múltiplos erros, apenas o primeiro erro é registado.
ByteCount Tamanho dos relatórios renderizados em bytes.
Número de Linhas Número de linhas retornadas de consultas.