Programmgesteuertes Aktivieren der Protokollierung

Gilt für:SQL Server SSIS Integration Runtime in Azure Data Factory

Die Runtime-Engine 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 Deaktiviert festgelegt ist.

Auswählen eines Protokollanbieters

Nachdem die LoggingMode-Eigenschaft auf Aktiviert 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 Protokolle der SQL-Ablaufverfolgung, die in SQL Server Profiler erfasst und 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 durch Trennzeichen getrennten 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 zwei Werte, ExclusionFilter und InclusionFilter, die angeben, ob die Ereignisse, die EventFilter hinzugefügt werden, 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  

Weitere Informationen

Integration Services-Protokollierung (SSIS)