Usare la vista ExecutionLog ed ExecutionLog3 in Reporting Services

Nel log di esecuzione del server di report di Reporting Services sono incluse informazioni sui report eseguiti in uno o più server. Questi server si trovano in una distribuzione con scalabilità orizzontale in modalità nativa o in una farm di SharePoint. È possibile usare il log di esecuzione del report per scoprire:

  • Numero di richieste di un report.
  • Quali formati di output vengono usati di più.
  • Ill tempo di elaborazione impiegato per ogni fase di elaborazione in millisecondi.

Nel log, inoltre, sono contenute informazioni sul tempo impiegato per l'esecuzione di una query del set di dati di un report e su quello speso per l'elaborazione dei dati. Gli amministratori del server di report possono esaminare le informazioni di log e identificare le attività a esecuzione prolungata. È anche possibile inviare suggerimenti agli autori di report sulle aree del set di dati o sull'elaborazione del report che potrebbero essere in grado di migliorare.

Nei server di report configurati per la modalità SharePoint possono essere usati anche i log del Servizio di registrazione unificato (ULS) di SharePoint. Per altre informazioni, vedere Abilitare gli eventi di Reporting Services per il log di traccia di SharePoint (ULS)

Visualizzare informazioni sul log

Nel server di report vengono registrati i dati sui report in una tabella interna del database. Le informazioni della tabella sono disponibili dalle viste SQL Server.

Il log di esecuzione del report viene archiviato nel database del server di report denominato ReportServerper impostazione predefinita. Nelle viste SQL sono incluse le informazioni sul log di esecuzione. Le viste "2" e "3" sono state aggiunte in versioni più recenti e contengono nuovi campi oppure campi con nomi più descrittivi rispetto alle versioni precedenti. Le viste precedenti rimangono nel prodotto, così non vengono influenzate le applicazioni personalizzate basata su di esse. Se non si dispone di una dipendenza da una vista precedente, ad esempio ExecutionLog, si consiglia di usare la vista più recente, ExecutionLog3.

Impostazioni di configurazione per un server di report in modalità SharePoint

È possibile abilitare o disabilitare la registrazione per l'esecuzione del report dalle impostazioni di sistema di un'applicazione del servizio Reporting Services.

Per impostazione predefinita, le voci di log vengono mantenute per 60 giorni. Ogni giorno, alle 14.00, vengono rimosse le voci antecedenti In un'installazione datata sono disponibili solo 60 giorni di informazioni in qualsiasi momento.

Non è possibile impostare limiti sul numero di righe o sul tipo di voci registrate.

Abilitare la registrazione dell'esecuzione per un server SharePoint

  1. Da Amministrazione centrale SharePoint selezionare Gestisci applicazioni di servizio nel gruppo Gestione applicazioni.

  2. Selezionare il nome dell'applicazione del servizio Reporting Services da configurare.

  3. Seleziona Impostazioni di sistema:

  4. Selezionare Abilita registrazione di esecuzione nella sezione Registrazione .

  5. Seleziona OK.

Abilitare la registrazione dettagliata per un server SharePoint

La registrazione deve essere abilitata come descritto nei passaggi precedenti e successivamente completare i passaggi seguenti:

  1. Nella pagina Impostazioni sistema dell'applicazione del servizio Reporting Services trovare la sezione Definito dall'utente.

  2. Impostare ExecutionLogLevel su verbose(dettagliato). Si tratta di un campo di immissione testo e i due valori possibili sono verbose (dettagliato) e normal(normale).

Impostazioni di configurazione per un server di report in modalità nativa

È possibile abilitare o disabilitare la registrazione per l'esecuzione del report dalla pagina Proprietà server in SQL Server Management Studio. EnableExecutionLogging è una proprietà avanzata.

Per impostazione predefinita, le voci di log vengono mantenute per 60 giorni. Ogni giorno, alle 14.00, vengono rimosse le voci antecedenti In un'installazione datata sono disponibili solo 60 giorni di informazioni in qualsiasi momento.

Non è possibile impostare limiti sul numero di righe o sul tipo di voci registrate.

Abilitare la registrazione dell'esecuzione per un server in modalità nativa

  1. Avviare SQL Server Management Studio con privilegi amministrativi. Ad esempio, fare clic con il pulsante destro del mouse sull'icona di Management Studio e scegliere Esegui come amministratore.

  2. Connettersi al server di report desiderato.

  3. Fare clic con il pulsante destro del mouse sul nome del server e scegliere Proprietà. Se l'opzione Proprietà è disabilitata, verificare che SQL Server Management Studio venga eseguito con i privilegi amministrativi.

  4. Selezionare la pagina Registrazione.

  5. Selezionare Abilita la registrazione per l'esecuzione di report.

Abilitare la registrazione dettagliata per un server in modalità nativa

La registrazione deve essere abilitata come descritto nei passaggi precedenti e successivamente completare i passaggi seguenti:

  1. Dalla finestra di dialogo Proprietà server, selezionare la pagina Avanzate.

  2. Nella sezione Definito dall'utente impostare ExecutionLogLevel su verbose(dettagliato). Si tratta di un campo di immissione testo e i due valori possibili sono verbose (dettagliato) e normal(normale).

    Screenshot della finestra di dialogo Proprietà server che evidenzia il campo ExecutionLogLevel impostato su dettagliato.

Campi del log (ExecutionLog3)

In questa vista sono aggiunti dei nodi di diagnostica delle prestazioni all'interno della colonna AdditionalInfo basata su XML. La colonna AdditionalInfo contiene una struttura XML da 1 a molti campi di informazioni. Nell'esempio seguente viene illustrata un'istruzione Transact SQL che recupera righe dalla vista ExecutionLog3. Nell'esempio si presuppone che il database del server di report sia denominato ReportServer:

Use ReportServer  
select * from ExecutionLog3 order by TimeStart DESC  

Nella tabella seguente vengono descritti i dati acquisiti nel log di esecuzione del report.

Colonna Descrizione
InstanceName Nome dell'istanza del server di report tramite cui è stata gestita la richiesta. Se nell'ambiente è disponibile più di un server di report, è possibile analizzare la distribuzione di InstanceName per monitorare e determinare se tramite il servizio di bilanciamento del carico di rete vengono distribuite richieste attraverso i server di report come previsto.
ItemPath Percorso in cui viene archiviato un report o un elemento del report.
UserName Identificatore dell'utente.
ExecutionID L'identificatore interno associato a una richiesta. Le richieste nelle sessioni dello stesso utente condividono lo stesso ID esecuzione.
RequestType I valori possibili sono:

Interattivo

Abbonamento



L'analisi dei dati del log filtrati in base RequestType=Subscription e ordinati per TimeStart può rivelare periodi di utilizzo eccessivo della sottoscrizione ed è pertanto necessario modificare alcune delle sottoscrizioni del report a un'ora diversa.
Formato Formato di rendering.
Parametri Valori dei parametri usati per l'esecuzione del report.
ItemAction Valori possibili:

Render

Sort

BookMarkNavigation

DocumentNavigation

GetDocumentMap

Findstring

Execute

RenderEdit.
TimeStart Ora di inizio e ora dell'arresto, che indicano la durata dell'elaborazione del report.
TimeEnd
TimeDataRetrieval Numero di millisecondi impiegati per il recupero dei dati.
TimeProcessing Numero di millisecondi impiegati per l'elaborazione del report.
TimeRendering Numero di millisecondi impiegati per il rendering del report.
Origine Origine dell'esecuzione del report. Valori possibili:

Live

Cache: indica un'esecuzione memorizzata nella cache, ad esempio le query del set di dati che non vengono eseguite in tempo reale.

Snapshot

Cronologia

AdHoc: indica un report drill-through basato su modello di report generato dinamicamente. Può anche fare riferimento a un report Generatore di report visualizzato in anteprima in un client che utilizza il server di report per l'elaborazione e il rendering.

Sessione: indica una richiesta di completamento in una sessione già stabilita. Ad esempio la richiesta iniziale è di visualizzare la pagina 1 e la richiesta di completamento è di esportare in Excel con lo stato della sessione corrente.

Estensione di personalizzazione della definizione del report (RDCE): indica un'estensione di personalizzazione della definizione del report. Un'estensione personalizzata RDCE consente di personalizzare in modo dinamico la definizione di un report prima che venga passata al motore di elaborazione all'esecuzione del report.
Status Stato (rsSuccess oppure un codice di errore; in caso di più errori, viene registrato solo il primo).
ByteCount Dimensione dei report visualizzabili, in byte.
RowCount Numero di righe restituite dalle query.
AdditionalInfo Contenitore di proprietà XML in cui sono incluse informazioni aggiuntive sull'esecuzione. Il contenuto può essere diverso per ogni riga.

Campo AdditionalInfo

Il campo AdditionalInfo è un contenitore o struttura di proprietà XML contenente informazioni aggiuntive sull'esecuzione. Il contenuto può essere diverso per ogni riga del log.

Gli esempi seguenti mostrano il contenuto del campo AddtionalInfo per la registrazione standard e dettagliata:

Esempio di registrazione standard di 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>

Esempio di registrazione dettagliata di 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>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>

Negli esempi seguenti sono riportati alcuni dei valori visualizzati nel campo AddtionalInfo:

  • ProcessingEngine

    Se nella maggior parte dei report viene ancora mostrato il valore 1, è possibile esaminare come riprogettare questi report in modo che in essi venga utilizzato il motore di elaborazione su richiesta più nuovo e più efficiente.

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

    Numero di millisecondi impiegati per l'esecuzione delle operazioni correlate alla scala nel motore di elaborazione. Un valore 0 indica che non è stato impiegato ulteriore tempo per operazioni di scala. 0 indica inoltre che la richiesta non determina un utilizzo eccessivo della memoria.

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

    Stima della quantità massima di memoria, in KB, usata da ogni componente durante una particolare richiesta.

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

    Tipi di estensioni o di origini dei dati usate nel report. Il numero è quello delle occorrenze dell'origine dati specificata.

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

    Il valore è espresso in millisecondi. Queste informazioni possono essere usate nella diagnosi dei problemi di prestazioni. Il tempo necessario a recuperare le immagini da un server Web esterno può rallentare l'esecuzione del report complessiva.

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

    Struttura multilivello

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

Campi del log (ExecutionLog2)

In questa vista sono stati aggiunti alcuni campi nuovi e ne sono stati rinominati alcuni altri. Nell'esempio seguente viene illustrata un'istruzione Transact SQL che recupera righe dalla vista ExecutionLog2. Nell'esempio si presuppone che il database del server di report sia denominato ReportServer:

Use ReportServer  
select * from ExecutionLog2 order by TimeStart DESC  

Nella tabella seguente vengono descritti i dati acquisiti nel log di esecuzione del report.

Colonna Descrizione
InstanceName Nome dell'istanza del server di report tramite cui è stata gestita la richiesta.
ReportPath Struttura del percorso del report. Per un report salvato nella cartella radice test, il valore di ReportPath è /test.

Per un report denominato test salvato nella cartella samples, il valore di ReportPath sarà /Samples/test/.
UserName Identificatore dell'utente.
ExecutionID
RequestType Il tipo di richiesta è user o system.
Formato Formato di rendering.
Parametri Valori dei parametri usati per l'esecuzione del report.
ReportAction Valori possibili: Render, Sort, BookMarkNavigation, DocumentNavigation, GetDocumentMap, Findstring.
TimeStart Ora di inizio che indica la durata dell'elaborazione del report.
TimeEnd Ora di fine che indica la durata dell'elaborazione del report.
TimeDataRetrieval Numero di millisecondi impiegati per il recupero dei dati.
TimeProcessing Numero di millisecondi impiegati per l'elaborazione del report.
TimeRendering Numero di millisecondi impiegati per il rendering del report.
Origine Origine dell'esecuzione del report. Le opzioni sono 1=Live, 2=Cache, 3=Snapshot, 4=History.
Status Lo stato è rsSuccess o un codice errore. Se si verificano più errori, viene registrato solo il primo.
ByteCount Dimensione dei report visualizzabili, in byte.
RowCount Numero di righe restituite dalle query.
AdditionalInfo Contenitore di proprietà XML in cui sono incluse informazioni aggiuntive sull'esecuzione.

Campi del log (ExecutionLog)

Nell'esempio seguente viene illustrata un'istruzione Transact SQL che recupera righe dalla vista ExecutionLog. Nell'esempio si presuppone che il database del server di report sia denominato ReportServer:

Use ReportServer  
select * from ExecutionLog order by TimeStart DESC

Nella tabella seguente vengono descritti i dati acquisiti nel log di esecuzione del report.

Colonna Descrizione
InstanceName Nome dell'istanza del server di report tramite cui è stata gestita la richiesta.
ReportID Identificatore del report.
UserName Identificatore dell'utente.
RequestType Valori possibili:

True = Richiesta di sottoscrizione

False= Richiesta interattiva
Formato Formato di rendering.
Parametri Valori dei parametri usati per l'esecuzione del report.
TimeStart Ora di inizio e ora dell'arresto, che indicano la durata dell'elaborazione del report.
TimeEnd
TimeDataRetrieval Numero di millisecondi dedicati al recupero dei dati, all'elaborazione del report e al rendering del report.
TimeProcessing
TimeRendering
Origine Origine dell'esecuzione del report. Valori possibili: 1=Live, 2=Cache, 3=Snapshot, 4=History, 5=Adhoc, 6=Session, 7=RDCE.
Status I valori possibili sono rsSuccess, rsProcessingAborted o un codice errore. Se si verificano più errori, viene registrato solo il primo.
ByteCount Dimensione dei report visualizzabili, in byte.
RowCount Numero di righe restituite dalle query.