Verwendung von ExecutionLog und der Ansicht ExecutionLog3 in Reporting Services
Das Ausführungsprotokoll des Berichtsservers in Reporting Services enthält Informationen zu den Berichten, die auf dem Server bzw. auf mehreren Servern ausgeführt werden. Diese Server befinden sich in einer Bereitstellung für horizontales Skalieren im nativen Modus oder einer SharePoint-Farm. Anhand des Berichtsausführungsprotokolls können Sie Folgendes herausfinden:
- Wie oft ein Bericht angefordert wird.
- Welche Ausgabeformate werden am häufigsten verwendet.
- Die für jede Verarbeitungsphase aufgewendete Zeit in Millisekunden.
Das Protokoll enthält Informationen über die Zeit, die für die Ausführung der Datasetabfrage eines Berichts aufgewendet wurde, und die Zeit, die für die Verarbeitung der Daten aufgewendet wurde. Wenn Sie ein Berichtsserveradministrator sind, können Sie die Protokollinformationen durchgehen und zeitintensive Aufgaben erkennen. Sie können den Berichtsautoren auch Vorschläge zu verbesserungsfähigen Bereichen des Datasets oder des Verarbeitungsberichts unterbreiten.
Berichtsserver, die für den SharePoint-Modus konfiguriert sind, können auch die Protokolle des SharePoint Unified Logging Service (ULS) nutzen. Weitere Informationen finden Sie unter Aktivieren von Reporting Services-Ereignissen für das SharePoint-Ablaufverfolgungsprotokoll (ULS)
Anzeigen von Protokollinformationen
Der Berichtsserver protokolliert Daten zur Berichtsausführung in einer internen Datenbanktabelle. Die Informationen aus der Tabelle sind in SQL Server-Sichten verfügbar.
Das Berichtsausführungsprotokoll wird in der Berichtsserver-Datenbank gespeichert, die standardmäßig ReportServergenannt wird. Die SQL-Ansichten enthalten die Ausführungsprotokollinformationen. Die Ansichten „2“ und „3“ wurden in aktuelleren Versionen hinzugefügt und enthalten neue Felder, oder sie enthalten Felder mit benutzerfreundlicheren Namen als die vorherigen Versionen. Die älteren Ansichten bleiben im Produkt erhalten, sodass die von ihnen abhängigen benutzerdefinierten Anwendungen nicht beeinträchtigt werden. Wenn keine Abhängigkeit von einer älteren Ansicht, z. B. ExecutionLog, vorliegt, sollten Sie die neueste Ansicht, ExecutionLog3, verwenden.
Konfigurationseinstellungen für einen Berichtsserver im SharePoint-Modus
Sie können die Berichtsausführungsprotokollierung in den Systemeinstellungen einer Reporting Services-Dienstanwendung aktivieren oder deaktivieren.
Standardmäßig werden Protokolleinträge 60 Tage gespeichert. Einträge, die diese Dauer überschreiten, werden täglich um 2:00 Uhr entfernt. Für eine länger vorhandene Installation stehen Informationen jeweils nur 60 Tage lang zur Verfügung.
Sie können keine Beschränkungen für die Anzahl der Zeilen oder die Art der protokollierten Einträge festlegen.
Aktivieren der Ausführungsprotokollierung für einen SharePoint-Server
Wählen Sie in der SharePoint-Zentraladministration in der Gruppe Anwendungsverwaltung die Option Dienstanwendungen verwalten aus.
Wählen Sie den Namen der Reporting Services-Dienstanwendung, die Sie konfigurieren möchten.
Wählen Sie Systemeinstellungen.
Wählen Sie Protokollierung der Ausführung aktivieren im Abschnitt Protokollierung aus.
Wählen Sie OK aus.
Ausführliche Protokollierung für einen SharePoint-Server aktivieren
Sie müssen das Protokollieren wie in den vorherigen Schritten beschrieben aktivieren und anschließend die folgenden Schritte ausführen:
Suchen Sie auf der Seite Systemeinstellungen Ihrer Reporting Services-Dienstanwendung den Abschnitt Benutzerdefiniert.
Ändern Sie ExecutionLogLevel in Ausführlich. Dieses Feld ist ein Texteingabefeld, und die zwei möglichen Werte sind Ausführlich und Normal.
Konfigurationseinstellungen für einen Berichtsserver im nativen Modus
Sie können die Protokollierung der Berichtsausführung auf der Seite "Servereigenschaften" in SQL Server Management Studio aktivieren oder deaktivieren. EnableExecutionLogging ist eine erweiterte Eigenschaft.
Standardmäßig werden Protokolleinträge 60 Tage gespeichert. Einträge, die diese Dauer überschreiten, werden täglich um 2:00 Uhr entfernt. Für eine länger vorhandene Installation stehen Informationen jeweils nur 60 Tage lang zur Verfügung.
Sie können keine Beschränkungen für die Anzahl der Zeilen oder die Art der protokollierten Einträge festlegen.
Aktivieren der Ausführungsprotokollierung für einen Server im nativen Modus
Starten Sie SQL Server Management Studio mit Administratorprivilegien. Klicken Sie z. B. mit der rechten Maustaste auf das Management Studio-Symbol und wählen Sie Ausführen als Administrator aus.
Stellen Sie eine Verbindung mit dem gewünschten Berichtsserver her.
Klicken Sie mit der rechten Maustaste auf den Servernamen und wählen Sie Eigenschaften. Wenn die Option Eigenschaften deaktiviert ist, überprüfen Sie, dass Sie SQL Server Management Studio mit Administratorprivilegien ausgeführt haben.
Wählen Sie die Seite Protokollierung aus.
Wählen Sie Protokollierung der Berichtsausführung aktivierenaus.
Aktivieren Sie die ausführliche Protokollierung für einen Server im nativen Modus
Sie müssen das Protokollieren wie in den vorherigen Schritten beschrieben aktivieren und anschließend die folgenden Schritte ausführen:
Wählen Sie im Dialog Servereigenschaften die Seite Erweitert aus.
Ändern Sie im Abschnitt Benutzerdefiniert den Wert für ExecutionLogLevel in Ausführlich. Dieses Feld ist ein Texteingabefeld, und die zwei möglichen Werte sind Ausführlich und Normal.
Protokollierungsfelder (ExecutionLog3)
Diese Ansicht fügt weitere Leistungsdiagnoseknoten innerhalb der XML-basierten AdditionalInfo-Spalte hinzu. Die Spalte AdditionalInfo enthält eine XML-Struktur von 1:n Informationsfeldern. Das folgende Beispiel zeigt eine Transact-SQL-Anweisung, die Zeilen aus der Ansicht ExecutionLog3 abruft. Im Beispiel wird davon ausgegangen, dass der Name der Berichtsserver-Datenbank ReportServerlautet:
Use ReportServer
select * from ExecutionLog3 order by TimeStart DESC
In der folgenden Tabelle werden die Daten beschrieben, die im Berichtsausführungsprotokoll aufgezeichnet werden.
Spalte | BESCHREIBUNG |
---|---|
InstanceName | Name der Berichtsserverinstanz, die die Anforderung verarbeitet hat. Wenn die Umgebung mehr als einen Berichtsserver hat, können Sie die zu überwachende InstanceName-Verteilung analysieren und bestimmen, ob der Netzwerklastenausgleich Anforderungen auf der anderen Seite von Berichtsservern wie erwartet verteilt. |
ItemPath | Pfad, in dem ein Bericht oder Berichtselement gespeichert wird. |
UserName | Benutzer-ID. |
ExecutionID | Der interne einer Anforderung zugeordnete Bezeichner. Anforderungen für die selben Benutzersitzungen besitzen dieselbe Ausführungs-ID. |
RequestType | Mögliche Werte: Interactive Abonnement Das Analysieren von nach RequestType=Subscription gefilterten und nach TimeStart sortierten Protokolldaten enthüllt möglicherweise Zeiträume starker Abonnementnutzung und Sie möchten vielleicht einige der Berichtsabonnements in eine andere Zeit ändern. |
Format | Renderingformat. |
Parameter | Parameterwerte, die für die Berichtsausführung verwendet werden. |
ItemAction | Mögliche Werte:Render Sort BookMarkNavigation DocumentNavigation GetDocumentMap Findstring Execute RenderEdit . |
TimeStart | Anfangs- und Beendigungszeit für die Verarbeitung eines Berichts. |
TimeEnd | |
TimeDataRetrieval | Anzahl von Millisekunden, die zum Abrufen der Daten benötigt werden. |
TimeProcessing | Anzahl von Millisekunden, die zum Verarbeiten des Berichts benötigt werden. |
TimeRendering | Anzahl von Millisekunden, die zum Rendern des Berichts benötigt werden. |
`Source` | Quelle der Berichtsausführung. Mögliche Werte: Live Cache: Gibt eine zwischengespeicherte Ausführung an, Datasetabfragen werden z. B. nicht live ausgeführt. Momentaufnahme Verlauf AdHoc: Kann einen auf einem dynamisch erstellten Berichtsmodell basierenden Drillthroughbericht angeben. Kann auch auf einen Berichts-Generator-Bericht verweisen, von dem eine Vorschau auf einem Client mithilfe des Berichtsservers zum Verarbeiten und Rendern angezeigt wird. Session: gibt eine Anschlussanforderung in einer bereits eingerichteten Sitzung an. Beispiel: Die ursprüngliche Anforderung besteht im Anzeigen von Seite 1, die Anschlussanforderung ist das Exportieren in Excel mit dem aktuellen Sitzungsstatus. Berichtsdefinitionsanpassungserweiterung (RDCE): Zeigt eine Erweiterung zur Anpassung der Berichtsdefinition an. Eine benutzerdefinierte RDCE-Erweiterung kann eine Berichtsdefinition dynamisch anpassen, bevor die Definition bei der Berichtsausführung an die Verarbeitungs-Engine übergeben wird. |
Status | Status (entweder rsSuccess oder ein Fehlercode; beim Auftreten mehrerer Fehler wird nur der erste Fehler aufgezeichnet). |
ByteCount | Größe von gerenderten Berichten in Bytes. |
RowCount | Anzahl der von Abfragen zurückgegebenen Zeilen. |
AdditionalInfo | Ein XML-Eigenschaftenbehälter, der weitere Informationen zur Ausführung enthält. Der Inhalt kann für jede Zeile anders sein. |
Das AdditionalInfo-Feld
Das AdditionalInfo-Feld ist ein XML-Eigenschaftenbehälter oder eine Struktur, die weitere Informationen zur Ausführung enthält. Der Inhalt kann für jede Zeile im Protokoll anders sein.
Im Folgenden sehen Sie Beispiele für den Inhalt des AddtionalInfo-Felds für die Standardprotokollierung und die ausführliche Protokollierung:
Beispiel für die Standardprotokollierung von 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>
Beispiel für die ausführliche Protokollierung von 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>
Im folgenden Beispiel sehen Sie einige der Werte, die im AdditionalInfo-Feld zu finden sind:
ProcessingEngine
Wenn die meisten Berichte immer noch den Wert 1 anzeigt, können Sie prüfen, wie sie umgestaltet werden sollen, damit sie die neuere und effizientere bedarfsgesteuerte Verarbeitungs-Engine verwenden.
1=SQL Server 2005, 2=The new On-demand Processing Engine
<ProcessingEngine>2</ProcessingEngine>
ScalabilityTime
Die Anzahl der Millisekunden, die für skalierungsrelevante Operationen in der Verarbeitungs-Engine benötigt werden. Der Wert
0
gibt an, dass keine weitere Zeit für Skalierungsoperationen aufgebracht wurde. Ein Wert0
gibt auch an, dass die Anforderung nicht unter unzureichendem Arbeitsspeicher erfolgte.<ScalabilityTime> <Processing>0</Processing> </ScalabilityTime>
EstimatedMemoryUsageKB
Eine Schätzung des Höhepunktarbeitsspeichers, in Kilobyte, verbraucht von jeder Komponente während einer bestimmten Anforderung.
<EstimatedMemoryUsageKB> <Processing>38</Processing> </EstimatedMemoryUsageKB>
DataExtension
Die Typen von Datenerweiterungen oder Datenquellen, die im Bericht verwendet werden. Die Zahl ist eine Anzahl von Vorkommen der speziellen Datenquelle.
<DataExtension> <DAX>2</DAX> </DataExtension>
ExternalImages
Der Wert ist in Millisekunden angegeben. Diese Daten können bei der Diagnose von Leistungsproblemen verwendet werden. Die zum Abrufen von Bildern von einem externen Webserver benötigte Zeit verlangsamt möglicherweise die gesamte Berichtsausführung.
<ExternalImages> <Count>3</Count> <ByteCount>9268</ByteCount> <ResourceFetchTime>9</ResourceFetchTime> </ExternalImages>
Verbindungen
Eine Struktur mit mehreren Ebenen
<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>
Protokollierungsfelder (ExecutionLog2)
Diese Ansicht hat einige neue Felder hinzugefügt und einige andere umbenannt. Das folgende Beispiel ist eine Transact-SQL-Anweisung, die Zeilen aus der Ansicht ExecutionLog2 abruft. Im Beispiel wird davon ausgegangen, dass der Name der Berichtsserver-Datenbank ReportServer
lautet:
Use ReportServer
select * from ExecutionLog2 order by TimeStart DESC
In der folgenden Tabelle werden die Daten beschrieben, die im Berichtsausführungsprotokoll aufgezeichnet werden.
Spalte | BESCHREIBUNG |
---|---|
InstanceName | Name der Berichtsserverinstanz, die die Anforderung verarbeitet hat. |
ReportPath | Die Pfadstruktur zum Bericht. Ein Bericht, der im Stammordner als Test gespeichert ist, hat den ReportPath /test .Ein Bericht mit dem Namen Test, der im Ordner Samples gespeichert ist, hätte den ReportPath /Samples/test/ . |
UserName | Benutzer-ID. |
ExecutionID | |
RequestType | Der Anforderungstyp ist entweder user oder system . |
Format | Renderingformat. |
Parameter | Parameterwerte, die für die Berichtsausführung verwendet werden. |
ReportAction | Mögliche Werte: Render , Sort , BookMarkNavigation , DocumentNavigation , GetDocumentMap , Findstring . |
TimeStart | Anfangszeit für die Verarbeitung eines Berichts. |
TimeEnd | Endzeit für die Verarbeitung eines Berichts. |
TimeDataRetrieval | Anzahl von Millisekunden, die zum Abrufen der Daten benötigt werden. |
TimeProcessing | Anzahl von Millisekunden, die zum Verarbeiten des Berichts benötigt werden. |
TimeRendering | Anzahl von Millisekunden, die zum Rendern des Berichts benötigt werden. |
`Source` | Quelle der Berichtsausführung. Folgende Optionen sind möglich: 1=Live , 2=Cache , 3=Snapshot , 4=History . |
Status | Der Status ist entweder rsSuccess oder ein Fehlercode. Wenn mehrere Fehler auftreten, wird nur der erste Fehler aufgezeichnet. |
ByteCount | Größe von gerenderten Berichten in Bytes. |
RowCount | Anzahl der von Abfragen zurückgegebenen Zeilen. |
AdditionalInfo | Ein XML-Eigenschaftenbehälter, der weitere Informationen zur Ausführung enthält. |
Protokollierungsfelder (ExecutionLog)
Das folgende Beispiel ist eine Transact-SQL-Anweisung, die Zeilen aus der Ansicht ExecutionLog abruft. Im Beispiel wird davon ausgegangen, dass der Name der Berichtsserver-Datenbank ReportServer
lautet:
Use ReportServer
select * from ExecutionLog order by TimeStart DESC
In der folgenden Tabelle werden die Daten beschrieben, die im Berichtsausführungsprotokoll aufgezeichnet werden.
Spalte | BESCHREIBUNG |
---|---|
InstanceName | Name der Berichtsserverinstanz, die die Anforderung verarbeitet hat. |
ReportID | Berichts-ID. |
UserName | Benutzer-ID. |
RequestType | Mögliche Werte: True = Eine Abonnementanforderung False = Eine interaktive Anforderung |
Format | Renderingformat. |
Parameter | Parameterwerte, die für die Berichtsausführung verwendet werden. |
TimeStart | Anfangs- und Beendigungszeit für die Verarbeitung eines Berichts. |
TimeEnd | |
TimeDataRetrieval | Zeitaufwand (in Millisekunden) für das Abfragen der Daten, das Verarbeiten des Berichts und das Rendern des Berichts. |
TimeProcessing | |
TimeRendering | |
`Source` | Quelle der Berichtsausführung. Mögliche Werte: (1=Live, 2=Cache, 3=Snapshot, 4=History, 5=Adhoc, 6=Session, 7=RDCE). |
Status | Mögliche Werte sind rsSuccess , rsProcessingAborted oder ein Fehlercode. Wenn mehrere Fehler auftreten, wird nur der erste Fehler aufgezeichnet. |
ByteCount | Größe von gerenderten Berichten in Bytes. |
RowCount | Anzahl der von Abfragen zurückgegebenen Zeilen. |