Partager via


Utiliser ExecutionLog et la vue ExecutionLog3 dans Reporting Services

Le journal d'exécution du serveur de rapports Reporting Services contient des informations sur les rapports exécutés sur le serveur ou sur plusieurs serveurs. Ces serveurs font partie d'un déploiement en mode natif de type scale-out ou une batterie de serveurs SharePoint. Vous pouvez utiliser le journal d'exécution de rapport pour découvrir :

  • Le nombre de demandes de rapport.
  • Quels sont les formats de sortie les plus utilisés ?
  • Le temps de traitement consacré à chaque phase de traitement en millisecondes.

Le journal contient des informations sur la durée d’exécution de la requête relative au jeu de données d’un rapport et sur le temps passé à traiter les données. Si vous êtes administrateur du serveur de rapports, vous pouvez examiner les informations du journal et identifier les tâches durables. Vous pouvez également faire des suggestions aux auteurs de rapports sur les zones du jeu de données ou le traitement du rapport qu'ils peuvent améliorer.

Les serveurs de rapports configurés pour le mode SharePoint peuvent également utiliser les journaux du service de journalisation unifié (ULS) de SharePoint. Pour plus d’informations, consultez Activer des événements Reporting Services pour le journal des traces SharePoint (ULS)

Afficher les informations des journaux

Le serveur de rapports consigne les données relatives à l’exécution des rapports dans une table interne de la base de données. Les informations de la table sont fournies par les vues de SQL Server.

Le journal d'exécution des rapports est stocké dans la base de données du serveur de rapports nommée par défaut ReportServer. Les vues SQL fournissent les informations associées au journal d'exécution. Les vues « 2 » et « 3 » ont été ajoutées dans les dernières versions et contiennent de nouveaux champs, ou des champs avec des noms plus conviviaux que dans les versions précédentes. Les anciennes vues sont toujours présentes dans le produit de sorte que les applications personnalisées qui dépendent d'elles ne sont pas impactées. Si vous ne dépendez pas d'une vue plus ancienne, par exemple ExecutionLog, vous devez utiliser la vue la plus récente, ExecutionLog3.

Paramètres de configuration d'un serveur de rapports en mode SharePoint

Vous pouvez activer ou désactiver la journalisation de l'exécution des rapports dans les paramètres système d'une application de service Reporting Services .

Par défaut, les entrées de journal sont conservées pendant 60 jours. Au-delà de cette date, les entrées sont supprimées à 02:00 tous les jours. Dans une installation déjà rodée, seuls 60 jours d'informations sont disponibles à tout moment.

Vous ne pouvez pas définir de limites pour le nombre de lignes ou le type d'entrées enregistrées.

Activer la journalisation d’exécution pour un serveur SharePoint

  1. Dans l'Administration centrale de SharePoint, sélectionnez Gérer les applications de service dans le groupe Gestion des applications.

  2. Choisissez le nom de l'application de service Reporting Services à configurer.

  3. Sélectionnez Paramètres du système.

  4. Sélectionnez Activer la journalisation des exécutions dans la section Enregistrement .

  5. Cliquez sur OK.

Activer la journalisation verbeuse pour un serveur SharePoint

Vous devez activer la journalisation comme le décrivent les étapes précédentes, puis effectuer les étapes suivantes :

  1. Dans la page Paramètres système de votre application de service Reporting Services , recherchez la section Défini par l’utilisateur .

  2. Modifiez ExecutionLogLevel en verbose. Ce champ est un champ d'entrée de texte et les deux valeurs possibles sont verbose et normal.

Paramètres de configuration d'un serveur de rapports en mode natif

Vous pouvez activer ou désactiver la journalisation de l'exécution de rapports dans la page Propriétés du serveur de SQL Server Management Studio. EnableExecutionLogging est une propriété avancée.

Par défaut, les entrées de journal sont conservées pendant 60 jours. Au-delà de cette date, les entrées sont supprimées à 02:00 tous les jours. Dans une installation déjà rodée, seuls 60 jours d'informations sont disponibles à tout moment.

Vous ne pouvez pas définir de limites pour le nombre de lignes ou le type d'entrées enregistrées.

Activer la journalisation d’exécution pour un serveur en mode natif

  1. Ouvrez SQL Server Management Studio avec des privilèges d'administrateur. Par exemple, cliquez avec le bouton droit sur l'icône Management Studio et sélectionnez Exécuter en tant qu'administrateur.

  2. Connectez-vous au serveur de rapports souhaité.

  3. Cliquez avec le bouton droit sur le nom du serveur, puis sélectionnez Propriétés. Si l'option Propriétés est désactivée, vérifiez que vous avez ouvert SQL Server Management Studio avec des privilèges administratifs.

  4. Sélectionnez la page Journalisation.

  5. Sélectionnez Activer la journalisation de l'exécution des rapports.

Activer la journalisation verbeuse pour un serveur en mode natif

Vous devez activer la journalisation comme le décrivent les étapes précédentes, puis effectuer les étapes suivantes :

  1. Dans la boîte de dialogue Propriétés du serveur, sélectionnez sur la page Avancé.

  2. Dans la section Défini par l’utilisateur , modifiez ExecutionLogLevel sur verbose. Ce champ est un champ d'entrée de texte et les deux valeurs possibles sont verbose et normal.

    Capture d’écran de la zone de dialogue Propriétés du serveur mettant en surbrillance le champ ExecutionLogLevel défini sur détaillé.

Champs de journalisation (ExecutionLog3)

Cette vue ajoute des nœuds Performance Diagnostics dans la colonne AdditionalInfo basée sur XML. La colonne AdditionalInfo contient une structure XML de 1 à plusieurs champs d'information. L’exemple suivant montre une instruction Transact SQL qui extrait des lignes de la vue ExecutionLog3. L'exemple suppose que la base de données du serveur de rapports est nommée ReportServer:

Use ReportServer  
select * from ExecutionLog3 order by TimeStart DESC  

La table suivante décrit les données qui sont capturées dans le journal d’exécution des rapports.

Colonne Description
InstanceName Nom de l'instance du serveur de rapports qui a géré la demande. Si votre environnement inclut plusieurs serveurs de rapports, vous pouvez analyser la distribution InstanceName pour surveiller et déterminer si votre programme d'équilibrage de la charge réseau distribue les requêtes entre les différents serveurs de rapports comme prévu.
ItemPath Chemin de stockage d'un rapport ou d'un élément de rapport
UserName Identificateur de l'utilisateur.
ExecutionID Identificateur interne associé à une requête. Les requêtes sur les mêmes sessions utilisateur partagent le même ID d'exécution.
RequestType Valeurs possibles :

Interactive

Abonnement



L'analyse des données du journal filtrées par RequestType=Subscription et triées TimeStart par peut révéler des périodes de forte utilisation de l'abonnement et vous pouvez vouloir modifier certains abonnements à des rapports à une heure différente.
Format Format de rendu.
Paramètres Valeurs des paramètres utilisées pour une exécution de rapport.
ItemAction Valeurs possibles :

Render

Sort

BookMarkNavigation

DocumentNavigation

GetDocumentMap

Findstring

Execute

RenderEdit.
TimeStart Heures de début et de fin qui indiquent la durée d'un traitement de rapport.
TimeEnd
TimeDataRetrieval Nombre de millisecondes passées pour la récupération des données.
TimeProcessing Nombre de millisecondes passées pour le traitement du rapport.
TimeRendering Nombre de millisecondes passées pour le rendu du rapport.
Source Source d'exécution du rapport. Valeurs possibles :

En direct

Cache : indique une exécution mise en cache ; par exemple, les requêtes de jeu de données ne sont pas exécutées en direct.

Instantané

Historique

AdHoc : indique un modèle de rapport généré de manière dynamique en fonction du rapport d'extraction. Il peut également faire référence à un rapport Générateur de rapports en aperçu chez un client utilisant le serveur de rapports pour le traitement et le rendu.

Session : indique une requête de suivi dans une session déjà établie. Par exemple, la requête initiale concerne l'affichage de la page 1 et la requête de suivi concerne l'exportation vers Excel avec l'état de session active.

Extension de personnalisation du modèle de rapport (RDCE) : indique une extension de personnalisation du modèle de rapport. Une extension RDCE personnalisée peut personnaliser dynamiquement une définition de rapport avant qu'elle ne soit passée au moteur de traitement lors de l'exécution.
État État (soit rsSuccess, soit un code d'erreur. En cas de plusieurs erreurs, seule la première est enregistrée).
ByteCount Taille en octets des rapports rendus.
RowCount Nombre de lignes retournées par les requêtes.
AdditionalInfo Conteneur des propriétés XML contenant des informations supplémentaires sur l'exécution. Le contenu peut être différent pour chaque ligne.

Champ AdditionalInfo

Le champ AdditionalInfo est un conteneur des propriétés ou une structure XML contenant des informations supplémentaires sur l’exécution. Le contenu peut être différent pour chaque ligne dans le journal.

Les exemples suivants illustrent le contenu du champ AddtionalInfo pour la journalisation standard et la journalisation verbeuse :

Exemple de journalisation standard d'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>

Exemple de journalisation commentée d'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>

Les exemples suivants illustrent certaines des valeurs figurant dans le champ AdditionalInfo :

  • ProcessingEngine

    Si la plupart de vos rapports affichent toujours la valeur 1, vous pouvez envisager de les reconcevoir afin qu'ils utilisent le nouveau moteur de traitement à la demande qui est plus efficace.

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

    Nombre de millisecondes passées pour exécuter des opérations d'échelle dans le moteur de traitement. Une valeur de 0 indique qu'aucun autre temps n'a été consacré aux opérations de mise à l'échelle et une valeur de 0 indique également que la demande n'est pas soumise à une sollicitation de la mémoire.

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

    Estimation de la quantité maximale de mémoire, en kilo-octets, consommée par chaque composant pendant une requête particulière.

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

    Types d'extensions de données ou de sources de données utilisées dans le rapport. Le nombre représente le nombre d'occurrences de la source de données spécifique.

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

    Cette valeur est exprimée en millisecondes. Ces données peuvent être utilisées pour diagnostiquer les problèmes de performances. Le temps nécessaire pour extraire les images d'un serveur web externe peut ralentir l'exécution globale du rapport.

    <ExternalImages>  
        <Count>3</Count>  
        <ByteCount>9268</ByteCount>  
        <ResourceFetchTime>9</ResourceFetchTime>  
    </ExternalImages>  
    
  • Connexions

    Structure à plusieurs niveaux

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

Champs de journalisation (ExecutionLog2)

Cette vue ajoute de nouveaux champs et contient des champs renommés. L’exemple suivant est une instruction Transact SQL qui extrait des lignes de la vue ExecutionLog2. L’exemple suppose que la base de données du serveur de rapports est nommée ReportServer ReportServer :

Use ReportServer  
select * from ExecutionLog2 order by TimeStart DESC  

La table suivante décrit les données qui sont capturées dans le journal d’exécution des rapports.

Colonne Description
InstanceName Nom de l'instance du serveur de rapports qui a géré la demande.
ReportPath Structure du chemin d'accès au rapport. Un rapport enregistré dans le dossier racine sous test, a un ReportPath de /test.

Un rapport nommé test, enregistré dans le dossier Samples, aurait un ReportPath de /Samples/test/.
UserName Identificateur de l'utilisateur.
ExecutionID
RequestType Le type de demande est user ou system.
Format Format de rendu.
Paramètres Valeurs des paramètres utilisées pour une exécution de rapport.
ReportAction Valeurs possibles : Render, Sort, BookMarkNavigation, DocumentNavigation, GetDocumentMap, Findstring.
TimeStart Heure de début qui indique la durée d'un traitement de rapport.
TimeEnd Heure de fin qui indique la durée d'un traitement de rapport.
TimeDataRetrieval Nombre de millisecondes passées pour la récupération des données.
TimeProcessing Nombre de millisecondes passées pour le traitement du rapport.
TimeRendering Nombre de millisecondes passées pour le rendu du rapport.
Source Source d'exécution du rapport. Les options sont : 1=Live, 2=Cache, 3=Snapshot, 4=History.
État L'état est soit rsSuccess, soit un code d'erreur. Si plusieurs erreurs se produisent, seule la première erreur est enregistrée.
ByteCount Taille en octets des rapports rendus.
RowCount Nombre de lignes retournées par les requêtes.
AdditionalInfo Conteneur des propriétés XML contenant des informations supplémentaires sur l'exécution.

Champs de journalisation (ExecutionLog)

L'exemple suivant est une instruction Transact SQL qui extrait des lignes de la vue ExecutionLog. L’exemple suppose que la base de données du serveur de rapports est nommée ReportServer ReportServer :

Use ReportServer  
select * from ExecutionLog order by TimeStart DESC

La table suivante décrit les données qui sont capturées dans le journal d’exécution des rapports.

Colonne Description
InstanceName Nom de l'instance du serveur de rapports qui a géré la demande.
ReportID Identificateur du rapport.
UserName Identificateur de l'utilisateur.
RequestType Valeurs possibles :

True = Demande d'abonnement

False= Demande interactive
Format Format de rendu.
Paramètres Valeurs des paramètres utilisées pour une exécution de rapport.
TimeStart Heures de début et de fin qui indiquent la durée d'un traitement de rapport.
TimeEnd
TimeDataRetrieval Nombre de millisecondes consacré à la récupération des données, au traitement du rapport et au rendu du rapport.
TimeProcessing
TimeRendering
Source Source d'exécution du rapport. Valeurs possibles : (1=Actif, 2=Cache, 3=Instantané, 4=Historique, 5=Adhoc, 6=Session, 7=RDCE).
État Les valeurs possibles sont rsSuccess, rsProcessingAborted ou un code d'erreur. Si plusieurs erreurs se produisent, seule la première erreur est enregistrée.
ByteCount Taille en octets des rapports rendus.
RowCount Nombre de lignes retournées par les requêtes.