Freigeben über


Programmgesteuertes Aktivieren der Protokollierung

Das Laufzeitmodul stellt eine Auflistung von LogProvider-Objekten bereit, mit deren Hilfe ereignisspezifische Informationen während der Paketüberprüfung und -ausführung aufgezeichnet werden können. LogProvider-Objekte sind für DtsContainer-Objekte verfügbar; hierzu zählen auch die Objekte TaskHost, Package, ForLoop und ForEachLoop. Die Protokollierung wird für einzelne Container oder das gesamte Paket aktiviert.

Es gibt mehrere Typen von Protokollanbietern, die für einen zu verwendenden Container verfügbar sind. Dies bietet die Flexibilität, Protokollinformationen in vielen verschiedenen Formaten erstellen und speichern zu können. Das Eintragen eines Containerobjekts zur Protokollierung umfasst zwei Schritte. Zuerst wird die Protokollierung aktiviert, und im zweiten Schritt wird ein Protokollanbieter ausgewählt. Die Eigenschaften LoggingOptions und LoggingMode des Containers werden zum Angeben der protokollierten Ereignisse und zum Auswählen des Protokollanbieters verwendet.

Aktivieren der Protokollierung

Die LoggingMode-Eigenschaft ist in jedem Container verfügbar, der eine Protokollierung ausführen kann, und legt fest, ob die Ereignisinformationen des Containers im Ereignisprotokoll aufgezeichnet werden. Der Eigenschaft wird ein Wert aus der DTSLoggingMode-Struktur zugewiesen, sie wird standardmäßig vom übergeordneten Container geerbt. Wenn der Container ein Paket ist und deshalb keinen übergeordneten Container hat, verwendet die Eigenschaft die UseParentSetting, die standardmäßig auf Disabled festgelegt ist.

Auswählen eines Protokollanbieters

Nachdem die LoggingMode-Eigenschaft auf Enabled festgelegt wurde, wird der SelectedLogProviders-Auflistung des Containers ein Protokollanbieter hinzugefügt, um den Prozess abzuschließen. Die SelectedLogProviders-Auflistung steht im LoggingOptions-Objekt zur Verfügung und enthält die für den Container ausgewählten Protokollanbieter. Zum Erstellen eines Anbieters und Hinzufügen dieses Anbieters zu einer Auflistung wird die Add-Methode aufgerufen. Die Methode gibt daraufhin den Protokollanbieter zurück, der der Auflistung hinzugefügt wurde. Jeder Anbieter verfügt über eindeutige Konfigurationseinstellungen, und diese Eigenschaften werden mithilfe der ConfigString-Eigenschaft festgelegt.

In der folgenden Tabelle werden die verfügbaren Protokollanbieter, ihre Beschreibung und ihre ConfigString-Informationen aufgeführt.

Anbieter

Beschreibung

ConfigString-Eigenschaft

SQL Server Profiler

Generiert SQL-Ablaufverfolgungen, die aufgezeichnet und im SQL Server-Profiler angezeigt werden können. Die standardmäßige Dateinamenerweiterung für diesen Anbieter ist TRC.

Es ist keine Konfiguration erforderlich.

SQL Server

Schreibt in allen SQL Server-Datenbanken Ereignisprotokolleinträge in die sysssislog-Tabelle.

SQL Server-Anbieter erfordert eine angegebene Verbindung zur Datenbank sowie den Namen der Zieldatenbank.

Textdatei

Schreibt Ereignisprotokolleinträge im CSV-Format in ASCII-Textdateien. Die standardmäßige Dateinamenerweiterung für diesen Anbieter ist LOG.

Der Name eines Dateiverbindungs-Managers.

Windows-Ereignisprotokoll

Schreibt Protokolle in das Anwendungsprotokoll im standardmäßigen Windows-Ereignisprotokoll auf dem lokalen Computer.

Es ist keine Konfiguration erforderlich.

XML-Datei

Schreibt Ereignisprotokolleinträge in Dateien im XML-Format. Die standardmäßige Dateinamenerweiterung für diesen Anbieter ist XML.

Der Name eines Dateiverbindungs-Managers.

Ob Ereignisse in das Ereignisprotokoll aufgenommen werden oder nicht, wird über die EventFilterKind-Eigenschaft und die EventFilter-Eigenschaft des Containers festgelegt. Die EventFilterKind-Struktur enthält die beiden Werte ExclusionFilter und InclusionFilter, die angeben, ob die dem EventFilter hinzugefügten Ereignisse im Ereignisprotokoll enthalten sind. Der EventFilter-Eigenschaft wird daraufhin ein Zeichenfolgenarray mit den Namen der Ereignisse zugewiesen, nach denen gefiltert wurde.

Mit dem folgenden Code wird die Protokollfunktion eines Pakets aktiviert, der Protokollanbieter für Textdateien zur SelectedLogProviders-Auflistung hinzugefügt und eine Liste der Ereignisse angegeben, die in die Protokollausgabe aufgenommen werden sollen.

Beispiel

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace Microsoft.SqlServer.Dts.Samples
{
  class Program
  {
    static void Main(string[] args)
    {
      Package p = new Package();

      ConnectionManager loggingConnection = p.Connections.Add("FILE");
      loggingConnection.ConnectionString = @"C:\SSISPackageLog.txt";

      LogProvider provider = p.LogProviders.Add("DTS.LogProviderTextFile.2");
      provider.ConfigString = loggingConnection.Name;
      p.LoggingOptions.SelectedLogProviders.Add(provider);
      p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion;
      p.LoggingOptions.EventFilter = new String[] { "OnPreExecute", 
         "OnPostExecute", "OnError", "OnWarning", "OnInformation" };
      p.LoggingMode = DTSLoggingMode.Enabled;

      // Add tasks and other objects to the package.

    }
  }
}
Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim p As Package = New Package()

    Dim loggingConnection As ConnectionManager = p.Connections.Add("FILE")
    loggingConnection.ConnectionString = "C:\SSISPackageLog.txt"

    Dim provider As LogProvider = p.LogProviders.Add("DTS.LogProviderTextFile.2")
    provider.ConfigString = loggingConnection.Name
    p.LoggingOptions.SelectedLogProviders.Add(provider)
    p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion
    p.LoggingOptions.EventFilter = New String() {"OnPreExecute", _
       "OnPostExecute", "OnError", "OnWarning", "OnInformation"}
    p.LoggingMode = DTSLoggingMode.Enabled

    ' Add tasks and other objects to the package.

  End Sub

End Module
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.