Implementieren der Protokollierung in Pakete

Integration Services schließt Protokollierungsfunktionen ein, mit denen beim Auftreten von Laufzeitereignissen Protokolleinträge und möglicherweise benutzerdefinierte Meldungen geschrieben werden.

Integration Services unterstützt verschiedene Gruppen von Protokollierungsanbietern und bietet Ihnen die Möglichkeit, benutzerdefinierte Protokollanbieter zu erstellen. Mit den Integration Services-Protokollanbietern können Protokolleinträge in Textdateien, SQL Server Profiler, SQL Server, im Windows-Ereignisprotokoll oder in XML-Dateien geschrieben werden.

Protokolle werden Paketen zugeordnet und auf Paketebene konfiguriert. Jeder Task oder Container in einem Paket kann Informationen in einem Paketprotokoll protokollieren. Die Tasks und Container in einem Paket können für die Protokollierung auch dann aktiviert werden, wenn das Paket selbst nicht aktiviert ist. Sie können z. B. die Protokollierung für den Task "SQL ausführen" aktivieren, ohne die Protokollierung für das übergeordnete Paket zu aktivieren. Ein Paket, ein Container oder ein Task kann in mehrere Protokolle schreiben. Sie haben die Möglichkeit, die Protokollierung nur für das Paket bzw. für einen beliebigen im Paket enthaltenen Task oder Container zu aktivieren.

Zum Anpassen der Protokollierung eines Ereignisses oder einer benutzerdefinierten Meldung wird in Integration Services ein Schema häufig protokollierter Informationen bereitgestellt, die in Protokolleinträgen aufgenommen werden. Das Integration Services-Protokollschema definiert die Informationen, die Sie protokollieren können. Für jeden Protokolleintrag können Sie Elemente aus dem Protokollschema auswählen.

Ein Paket und seine Container und Tasks protokollieren nicht dieselben Informationen, und Tasks innerhalb desselben Pakets oder Containers können verschiedene Informationen protokollieren. Ein Paket kann z. B. Operatorinformationen protokollieren, wenn das Paket gestartet wird, ein Task kann die Fehlerquelle des Tasks protokollieren, und ein weiterer Task kann Informationen protokollieren, wenn Fehler auftreten. Wenn ein Paket und seine Container mehrere Protokolle verwenden, werden dieselben Informationen in alle Protokolle geschrieben.

Sie können einen Protokolliergrad auswählen, der Ihren Anforderungen entspricht, indem Sie die zu protokollierenden Ereignisse und die für jedes Ereignis zu protokollierenden Informationen festlegen. Eventuell enthalten Ihrer Meinung nach einige Ereignisse nützlichere Informationen als andere. Vielleicht möchten Sie z. B. nur die Computer- und Operatornamen für das PreExecute-Ereignis protokollieren, für das Error-Ereignis jedoch alle verfügbaren Informationen.

Damit die Protokolldateien keine großen Speichermengen belegen oder um eine zu umfangreiche Protokollierung zu vermeiden, was zu einer Leistungsverschlechterung führen könnte, können Sie die Protokollierung einschränken, indem Sie bestimmte zu protokollierende Ereignisse und Informationen auswählen. So können Sie z. B. ein Protokoll konfigurieren, das nur das Datum und den Computernamen für einen Fehler erfasst.

In SSIS-Designer legen Sie die Protokollierungsoptionen im Dialogfeld SSIS-Protokolle konfigurieren fest.

Protokollschema

In der folgenden Tabelle werden die Elemente im Protokollschema beschrieben.

Element

Beschreibung

Computer

Der Name des Computers, auf dem das Protokollereignis auftrat.

Operator

Die Identität des Benutzers, der das Paket gestartet hat.

SourceName

Der Name des Containers oder des Tasks, für den das Protokollereignis auftrat.

SourceID

Der eindeutige Bezeichner des Pakets; der For-Schleifen-, Foreach-Schleifen- oder Sequenz-Container; oder der Task, für den das Protokollereignis auftrat.

ExecutionID

Die GUID der Paketausführungsinstanz.

HinweisHinweis
Beim Ausführen eines einzelnen Pakets werden möglicherweise Protokolleinträge mit anderen Werten für das ExecutionID-Element erstellt. Wenn Sie ein Paket beispielsweise in BI Development Studio ausführen, werden in der Überprüfungsphase möglicherweise Protokolleinträge mit einem ExecutionID-Element erstellt, das BI Development Studio entspricht. In der Ausführungsphase werden jedoch unter Umständen Protokolleinträge mit einem ExecutionID-Element erstellt, das dtshost.exe entspricht. Um ein weiteres Beispiel zu geben, können Sie ein Paket ausführen, das Tasks vom Typ "Paket ausführen" enthält, wobei von jedem dieser Tasks ein untergeordnetes Paket ausgeführt wird. Diese untergeordneten Pakete erstellen möglicherweise Protokolleinträge mit einem anderen ExecutionID-Element als in den vom übergeordneten Paket erstellten Protokolleinträgen.

MessageText

Eine dem Protokolleintrag zugeordnete Meldung.

DataBytes

Ein für den Protokolleintrag spezifisches Bytearray. Die Bedeutung dieses Felds variiert je nach Protokolleintrag.

Die folgende Tabelle beschreibt drei zusätzliche Elemente des Protokollschemas, die auf der Registerkarte Details des Dialogfensters SSIS-Protokolle konfigurieren nicht verfügbar sind.

Element

Beschreibung

StartTime

Der Zeitpunkt, zu dem der Container oder der Task die Ausführung beginnt.

EndTime

Der Zeitpunkt, zu dem der Container oder der Task die Ausführung beendet.

DataCode

Ein optionaler ganzzahliger Wert, typischerweise ein Wert aus der DTSExecResult-Enumeration, der das Ergebnis der Ausführung des Containers oder des Tasks angibt:

  • 0 – Erfolg

  • 1 – Fehlschlag

  • 2 – Abgeschlossen

  • 3 – Abgebrochen

Protokolleinträge

Integration Services unterstützt Protokolleinträge für vordefinierte Ereignisse und stellt für viele Integration Services-Objekte benutzerdefinierte Protokolleinträge bereit. Im Dialogfeld SSIS-Protokolle konfigurieren des SSIS-Designers werden diese Ereignisse und benutzerdefinierten Protokolleinträge aufgelistet.

In der folgenden Tabelle werden die vordefinierten Ereignisse beschrieben, die beim Auftreten von Laufzeitereignissen zum Schreiben von Protokolleinträgen aktiviert werden können. Diese Protokolleinträge gelten für ausführbare Dateien, das Paket sowie die im Paket enthaltenen Tasks und Container. Der Name des Protokolleintrags entspricht dem Namen des ausgelösten Laufzeitereignisses, mit dem das Schreiben des Protokolleintrags verursacht wurde.

Ereignisse

Beschreibung

OnError

Schreibt einen Protokolleintrag, wenn ein Fehler auftritt.

OnExecStatusChanged

Schreibt einen Protokolleintrag, wenn sich der Ausführungsstatus der ausführbaren Datei ändert.

OnInformation

Schreibt einen Protokolleintrag während der Prüfung und Ausführung einer ausführbaren Datei, um Informationen zu melden.

OnPostExecute

Schreibt einen Protokolleintrag unmittelbar nach Beendigung der Ausführung der ausführbaren Datei.

OnPostValidate

Schreibt einen Protokolleintrag, wenn die Überprüfung der ausführbaren Datei beendet ist.

OnPreExecute

Schreibt einen Protokolleintrag unmittelbar vor Ausführung der ausführbaren Datei.

OnPreValidate

Schreibt einen Protokolleintrag, wenn die Überprüfung der ausführbaren Datei beginnt.

OnProgress

Schreibt einen Protokolleintrag, wenn die ausführbare Datei einen messbaren Fortschritt gemacht hat.

OnQueryCancel

Schreibt einen Protokolleintrag für jeden Punkt in der Taskverarbeitung, an dem ein Abbruch der Ausführung sinnvoll ist.

OnTaskFailed

Schreibt einen Protokolleintrag, wenn ein Task fehlschlägt.

OnVariableValueChanged

Schreibt einen Protokolleintrag, wenn sich der Wert einer Variablen ändert.

OnWarning

Schreibt einen Protokolleintrag, wenn eine Warnung auftritt.

PipelineComponentTime

Schreibt für jede Datenflusskomponente einen Protokolleintrag für jede Phase der Überprüfung und der Ausführung. Der Protokolleintrag gibt die Verarbeitungszeit für jede Phase an.

Diagnostic

Schreibt einen Protokolleintrag, der Diagnoseinformationen enthält.

Sie können zum Beispiel vor und nach jedem Aufruf eines externen Datenanbieters eine Meldung protokollieren. Weitere Informationen finden Sie unter Paketausführung (Problembehandlung).

Das Paket und viele Tasks verfügen über benutzerdefinierte Protokolleinträge, die für die Protokollierung aktiviert werden können. Der Task Mail senden stellt z. B. den benutzerdefinierten Protokolleintrag SendMailTaskBegin bereit, mit dem Informationen protokolliert werden, wenn die Ausführung des Tasks Mail senden begonnen, jedoch bevor eine E-Mail-Nachricht gesendet wird. Weitere Informationen finden Sie unter Benutzerdefinierte Meldungen für die Protokollierung.

Unterscheiden von Paketkopien

Protokolldaten schließen den Namen und den GUID des Pakets ein, zu dem die Protokolleinträge gehören. Beim Erstellen eines neuen Pakets durch Kopieren eines vorhandenen Pakets werden Name und GUID des vorhandenen Pakets ebenfalls kopiert. Folglich können GUID und Name zweier Pakete identisch sein, sodass die Pakete in den Protokolldaten schwer voneinander zu unterscheiden sind.

Sie sollten den Namen und GUID der neuen Pakete ändern, um diese Mehrdeutigkeit zu umgehen. Sie können in Business Intelligence Development Studio mithilfe des Eigenschaftenfensters den GUID in der ID-Eigenschaft neu generieren und den Wert der Name-Eigenschaft aktualisieren. Sie haben auch die Möglichkeit, den GUID und Namen programmgesteuert oder mit dem Hilfsprogramm dtutil zu ändern. Weitere Informationen finden Sie unter Festlegen von Paketeigenschaften und dtutil-Hilfsprogramm (SSIS-Tool).

Übergeordnete Protokollierungsoptionen

Häufig entsprechen die Protokollierungsoptionen von Tasks und For-Schleifen-, Foreach-Schleifen- und Sequenz-Containern denen des Paketcontainers oder eines übergeordneten Containers. In diesem Fall können Sie diese so konfigurieren, dass sie die Protokollierungsoptionen von ihrem übergeordneten Container erben. In einem For-Schleifen-Container, der den Task "SQL ausführen" enthält, kann z. B. der Task "SQL ausführen" die Protokollierungsoptionen verwenden, die für den For-Schleifen-Container festgelegt werden. Um die übergeordneten Protokollierungsoptionen zu verwenden, legen Sie die LoggingMode-Eigenschaft des Containers auf UseParentSetting fest. Sie können diese Eigenschaft im Fenster Eigenschaften von Business Intelligence Development Studio oder im Dialogfeld SSIS-Protokolle konfigurieren in SSIS-Designer festlegen.

Protokollierungsvorlagen

Im Dialogfeld SSIS-Protokolle konfigurieren können Sie auch häufig verwendete Protokollierungskonfigurationen als Vorlagen erstellen und speichern und die Vorlagen dann in mehreren Paketen verwenden. So ist es einfach, eine konsequente Protokollierungsstrategie für mehrere Pakete anzuwenden und Protokolleinstellungen für Pakete zu ändern, indem die Vorlagen aktualisiert und dann angewendet werden. Die Vorlagen werden als XML-Dateien gespeichert.

So konfigurieren Sie die Protokollierung im Dialogfeld "SSIS-Protokolle konfigurieren"

  1. Aktivieren Sie das Paket und seine Tasks für die Protokollierung. Die Protokollierung kann auf Paket-, Container- und Taskebene stattfinden. Sie können verschiedene Protokolle für Pakete, Container und Tasks angeben.

  2. Wählen Sie einen Protokollanbieter aus, und fügen Sie ein Protokoll für das Paket hinzu. Protokolle können nur auf Paketebene erstellt werden, und ein Task oder Container muss eines der für das Paket erstellten Protokolle verwenden. Jedes Protokoll ist einem der folgenden Protokollanbieter zugeordnet: Textdatei, SQL Server Profiler, SQL Server, Windows-Ereignisprotokoll oder XML-Datei. Weitere Informationen finden Sie unter Vorgehensweise: Aktivieren der Protokollierung in einem Paket.

  3. Wählen Sie die Ereignisse und die Protokollschemainformationen zu jedem Ereignis aus, das Sie im Protokoll erfassen möchten. Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren von der Protokollierung mithilfe einer gespeicherten Konfigurationsdatei.

So zeigen Sie Protokolleinträge während der Paketentwicklung an

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf der Integration Services-Seite von MSDN oder TechNet:

Abonnieren Sie die auf der Seite verfügbaren RSS-Newsfeeds, um automatische Benachrichtigungen zu diesen Aktualisierungen zu erhalten.