Datenflusstask

Der Datenflusstask kapselt das Datenflussmodul, mit dem Daten zwischen Quellen und Zielen verschoben werden, und ermöglicht dem Benutzer das Transformieren, Bereinigen und Ändern von Daten beim Verschieben. Durch das Hinzufügen eines Datenflusstasks zu einer Paketablaufsteuerung kann das Paket Daten extrahieren, transformieren und laden.

Ein Datenfluss besteht aus mindestens einer Datenflusskomponente, normalerweise jedoch aus verbundenen Datenflusskomponenten. Dabei handelt es sich um Quellen zum Extrahieren von Daten, Transformationen zum Ändern, Routen oder Zusammenfassen von Daten sowie Ziele zum Laden von Daten. Die Komponenten sind im Datenfluss durch Pfade miteinander verbunden. Jeder Pfad gibt als Komponenten den Beginn und das Ende des Pfads an. Weitere Informationen finden Sie unter Datenflusselemente.

Zur Laufzeit erstellt der Datenflusstask einen Ausführungsplan vom Datenfluss, und das Datenflussmodul führt den Plan aus. Sie können einen Datenflusstask ohne Datenfluss erstellen, aber der Task wird nur ausgeführt, wenn mindestens ein Datenfluss vorhanden ist.

Im folgenden Diagramm wird ein Datenflusstask mit einem Datenfluss dargestellt.

Datenfluss

Ein Datenflusstask kann mehrere Datenflüsse einschließen. Falls ein Task mehrere Datasets kopiert und falls die Reihenfolge, in der die Daten kopiert werden, keine Rolle spielt, kann es praktischer sein, mehrere Datenflüsse in den Datenflusstask einzuschließen. Beispielsweise können Sie fünf Datenflüsse erstellen, von denen jeder Daten aus einer Flatfile in eine unterschiedliche Dimensionstabelle in einem Data Warehouse-Sternschema kopiert.

Das Datenflussmodul bestimmt jedoch die Ausführungsreihenfolge, wenn in einem einzigen Datenflusstask mehrere Datenflüsse vorhanden sind. Wenn deshalb die Reihenfolge eine Rolle spielt, sollte das Paket mehrere Datenflusstasks verwenden, wobei jeder Task einen Datenfluss enthält. Anschließend können Sie Rangfolgeneinschränkungen anwenden, um die Ausführungsreihenfolge der Tasks zu steuern.

Im folgenden Diagramm wird ein Datenflusstask mit mehreren Datenflüssen angezeigt.

Datenflüsse

Ein Paket kann mehrere Datenflusstasks enthalten. Bei komplexen Paketen ist dies häufig der Fall. Wenn z. B. für ein Paket Datenflüsse in einer bestimmten Reihenfolge oder andere Tasks zwischen den Datenflüssen ausgeführt werden müssen, ist für jeden Datenfluss ein separater Datenflusstask erforderlich.

Der Datenflusstask verwaltet auch den Fehlerfluss. Zur Laufzeit können Fehler auf Zeilenebene auftreten, wenn Datenflusskomponenten Daten konvertieren, eine Suche ausführen oder Ausdrücke auswerten. Beispielsweise kann eine Datenspalte mit einem Zeichenfolgenwert nicht in eine ganze Zahl konvertiert werden, oder ein Ausdruck versucht eine Division durch Null auszuführen. Beide Vorgänge führen zu Fehlern, und die fehlerhaften Zeilen können mithilfe eines Fehlerflusses separat verarbeitet werden. Weitere Informationen zum Verwenden von Fehlerflüssen im Paketdatenfluss finden Sie unter Behandeln von Fehlern im Datenfluss.

Zum Masseneinfügen von Daten aus Textdateien in eine SQL Server-Datenbank können Sie den Masseneinfügungstask anstelle eines Datenflusstasks und eines Datenflusses verwenden. Mit dem Masseneinfügungstask ist es jedoch nicht möglich, Daten zu transformieren. Weitere Informationen finden Sie unter Masseneinfügungstask.

Verwenden von Eigenschaftsausdrücken mit Datenflusselementen

Eine Reihe von Datenflusskomponenten – hierzu zählen Quellen, Transformationen und Ziele – unterstützen die Verwendung von Eigenschaftsausdrücken mit einigen ihrer Eigenschaften. Ein Eigenschaftsausdruck ist ein Ausdruck, der beim Laden des Pakets den Wert der Eigenschaft ersetzt. Zur Laufzeit verwendet das Paket die aktualisierten Eigenschaftswerte. Die Ausdrücke werden mithilfe der Integration Services-Ausdruckssyntax erstellt und können Integration Services-Funktionen, -Operatoren, -Bezeichner und -Variablen enthalten. Weitere Informationen finden Sie unter Referenzinformationen zu SQL Server Integration Services-Ausdrücken, Verwenden von Ausdrücken in Paketen und Verwendung von Eigenschaftsausdrücken in Paketen.

Wenn Sie in Business Intelligence Development Studio ein Paket erstellen, werden die Eigenschaften aller Datenflusskomponenten, die Eigenschaftsausdrücke unterstützen, im zugehörigen Datenflusstask verfügbar gemacht. Klicken Sie zum Hinzufügen, Ändern oder Entfernen von Eigenschaftsausdrücken der Datenflusskomponenten auf den Datenflusstask, und verwenden Sie dann das Eigenschaftenfenster oder den Editor für den Task, um Eigenschaftsausdrücke hinzuzufügen, zu ändern oder zu löschen. Die Eigenschaftsausdrücke für den Datenflusstask selbst werden vom Eigenschaftenfenster aus verwaltet.

Wenn der Datenfluss Komponenten enthält, die Ausdrücke verwenden, werden die Ausdrücke ebenfalls im Eigenschaftenfenster verfügbar gemacht. Wählen Sie zum Anzeigen von Ausdrücken den Datenflusstask aus, zu dem die betreffende Komponente gehört. Sie können Eigenschaften nach Kategorien oder alphabetisch sortiert anzeigen. Wenn Sie die kategorisierte Ansicht im Eigenschaftenfenster verwenden, werden alle Ausdrücke, die nicht von einer bestimmten Eigenschaft verwendet werden, in der Kategorie Verschiedenes aufgelistet. In der alphabetischen Ansicht werden die Ausdrücke nach den Namen der Datenflusskomponenten sortiert aufgelistet.

Protokolleinträge

Integration Services stellt für alle Tasks einen Satz Protokollereignisse zur Verfügung. Darüber hinaus stellt Integration Services für viele Tasks benutzerdefinierte Protokolleinträge bereit. Weitere Informationen finden Sie unter Implementieren der Protokollierung in Pakete und Benutzerdefinierte Meldungen für die Protokollierung. Der Datenflusstask enthält die folgenden benutzerdefinierten Protokolleinträge:

Protokolleintrag

Beschreibung

BufferSizeTuning

Zeigt an, dass der Datenflusstask die Größe des Puffers geändert hat. Der Protokolleintrag beschreibt die Gründe für die Größenänderung und listet die temporäre neue Puffergröße auf.

OnPipelinePostEndOfRowset

Gibt an, dass eine Komponente das Signal für das Ende des Rowsets erhalten hat. Dieses Signal wird durch den letzten Aufruf der ProcessInput-Methode festgelegt. Für jede Komponente im Datenfluss, die eine Eingabe verarbeitet, wird ein Eintrag geschrieben. Der Eintrag schließt den Namen der Komponente ein.

OnPipelinePostPrimeOutput

Zeigt an, dass die Komponente ihren letzten Aufruf der PrimeOutput-Methode abgeschlossen hat. Je nach Datenfluss werden möglicherweise mehrere Protokolleinträge geschrieben. Wenn es sich bei der Komponente um eine Quelle handelt, bedeutet dieser Protokolleintrag, dass die Komponente die Zeilenverarbeitung abgeschlossen hat.

OnPipelinePreEndOfRowset

Zeigt an, dass eine Komponente das Signal für das Ende des Rowsets erhalten soll. Dieses Signal wird durch den letzten Aufruf der ProcessInput-Methode festgelegt. Für jede Komponente im Datenfluss, die eine Eingabe verarbeitet, wird ein Eintrag geschrieben. Der Eintrag schließt den Namen der Komponente ein.

OnPipelinePrePrimeOutput

Zeigt an, dass die Komponente einen Aufruf aus der PrimeOutput-Methode erhalten soll. Je nach Datenfluss können mehrere Protokolleinträge geschrieben werden.

OnPipelineRowsSent

Berichtet die Anzahl von Zeilen, die einer Komponenteneingabe durch einen Aufruf der ProcessInput-Methode bereitgestellt wurden. Der Protokolleintrag enthält den Komponentennamen.

PipelineBufferLeak

Stellt Informationen zu Komponenten bereit, die Puffer aufrechterhalten haben, nachdem der Puffer-Manager beendet wurde. Aufrechterhaltene Puffer blockieren die Freigabe von Pufferressourcen und können Speicherverluste verursachen. Der Protokolleintrag stellt den Namen der Komponente und die ID des Puffers bereit.

PipelineComponentTime

Meldet den Zeitaufwand in Millisekunden, den die Komponente für jeden der Hauptverarbeitungsschritte "Validate", "PreExecute", "PostExecute", "ProcessInput" und "ProcessOutput" benötigt.

PipelineExecutionPlan

Berichtet den Ausführungsplan des Datenflusses. Der Ausführungsplan stellt Informationen dazu bereit, wie Puffer an Komponenten gesendet werden. Diese Informationen beschreiben in Kombination mit dem PipelineExecutionTrees-Protokolleintrag, was innerhalb des Datenflusstasks geschieht.

PipelineExecutionTrees

Berichtet die Ausführungsstrukturen des Layouts im Datenfluss. Die Datenfluss-Modulplanung verwendet die Strukturen zum Erstellen des Ausführungsplans des Datenflusses.

PipelineInitialization

Bietet Initialisierungsinformationen zu dem Task. Zu diesen Informationen gehören die Verzeichnisse für die temporäre Speicherung von BLOB-Daten, die Standardpuffergröße und die Zeilenanzahl in einem Puffer. Je nach der Konfiguration des Datenflusstasks werden möglicherweise mehrere Protokolleinträge geschrieben.

Diese Protokolleinträge stellen bei jeder Ausführung eines Pakets eine Fülle von Informationen zur Ausführung des Datenflusstasks bereit. Wenn Sie die Pakete wiederholt ausführen, können Sie Informationen erfassen, die im Laufe der Zeit wichtige Verlaufsinformationen zu der vom Task ausgeführten Verarbeitung, zu Problemen, die die Leistung beeinträchtigen können, und zu dem vom Task verarbeiteten Datenvolumen bereitstellen.

Weitere Informationen zur Verwendung dieser Protokolleinträge zum Überwachen und Verbessern der Leistung des Datenflusses finden Sie in einem der folgenden Themen:

Beispielmeldungen aus einem Datenflusstask

In der folgenden Tabelle werden Beispielmeldungen für Protokolleinträge für ein sehr einfaches Paket aufgelistet. Das Paket verwendet eine OLE DB-Quelle zum Extrahieren von Daten aus einer Tabelle, eine Transformation zum Sortieren, um die Daten zu sortieren, und ein OLE DB-Ziel, um die Daten in eine andere Tabelle zu schreiben.

Protokolleintrag

Meldungen

BufferSizeTuning

Die Zeilen im Puffertyp 0 führen zu einer Puffergröße, die den konfigurierten Maximalwert überschreitet. In Puffern dieses Typs sind dann nur 9637 Zeilen enthalten.

Die Zeilen im Puffertyp 2 führen zu einer Puffergröße, die den konfigurierten Maximalwert überschreitet. In Puffern dieses Typs sind dann nur 9497 Zeilen enthalten.

Die Zeilen im Puffertyp 3 führen zu einer Puffergröße, die den konfigurierten Maximalwert überschreitet. In Puffern dieses Typs sind dann nur 9497 Zeilen enthalten.

OnPipelinePostEndOfRowset

Eine Komponente erhält das Signal für das Ende des Rowsets. : 1180 : Sortieren : 1181 : Sortiereingabe

Eine Komponente erhält das Signal für das Ende des Rowsets. : 1291 : OLE DB-Ziel : 1304 : Eingabe des OLE DB-Ziels

OnPipelinePostPrimeOutput

Eine Komponente hat den PrimeOutput-Aufruf abgeschlossen. : 1180 : Sortieren

Eine Komponente hat den PrimeOutput-Aufruf abgeschlossen. : 1 : OLE DB-Quelle

OnPipelinePreEndOfRowset

Eine Komponente hat die Verarbeitung aller ihrer Zeilen abgeschlossen. : 1180 : Sortieren : 1181 : Sortiereingabe

Eine Komponente hat die Verarbeitung aller ihrer Zeilen abgeschlossen. : 1291 : OLE DB-Ziel : 1304 : Eingabe des OLE DB-Ziels

OnPipelinePrePrimeOutput

'PrimeOutput' wird für eine Komponente aufgerufen. : 1180 : Sortieren

'PrimeOutput' wird für eine Komponente aufgerufen. : 1 : OLE DB-Quelle

OnPipelineRowsSent

Die Zeilen wurden als Eingabe für eine Datenflusskomponente bereitgestellt. : : 1185 : Ausgabe der OLE DB-Quelle : 1180 : Sortieren : 1181 : Sortiereingabe : 76

Die Zeilen wurden als Eingabe für eine Datenflusskomponente bereitgestellt. : : 1308 : Sortierausgabe : 1291 : OLE DB-Ziel : 1304 : Eingabe des OLE DB-Ziels : 76

PipelineComponentTime

Die Komponente "Calculate LineItemTotalCost" (3522) hat 356 Millisekunden für den ProcessInput-Schritt benötigt.

Die Komponente "Sum Quantity and LineItemTotalCost" (3619) hat 79 Millisekunden für den ProcessInput-Schritt benötigt.

Die Komponente "Calculate Average Cost" (3662) hat 16 Millisekunden für den ProcessInput-Schritt benötigt.

Die Komponente "Sort by ProductID" (3717) hat 125 Millisekunden für den ProcessInput-Schritt benötigt.

Die Komponente "Load Data" (3773) hat 0 Millisekunden für den ProcessInput-Schritt benötigt.

Die Komponente "Extract Data" (3869) hat 688 Millisekunden für den PrimeOutput-Schritt benötigt und Puffer in der Ausgabe "Ausgabe der OLE DB-Quelle" (3879) aufgefüllt.

Die Komponente "Sum Quantity and LineItemTotalCost" (3619) hat 141 Millisekunden für den PrimeOutput-Schritt benötigt und Puffer in der Ausgabe "Aggregierte Ausgabe 1" (3621) aufgefüllt.

Die Komponente "Sort by ProductID" (3717) hat 16 Millisekunden für den PrimeOutput-Schritt benötigt und Puffer in der Ausgabe "Sortierausgabe" (3719) aufgefüllt.

PipelineExecutionPlan

SourceThread0

Drives: 1

Influences: 1180 1291

Output Work List

CreatePrimeBuffer of type 1 for output ID 11.

SetBufferListener: "WorkThread0" for input ID 1181

CreatePrimeBuffer of type 3 for output ID 12.

CallPrimeOutput on component "OLE DB Source" (1)

End Output Work List

End SourceThread0

WorkThread0

Drives: 1180

Influences: 1180 1291

Input Work list, input ID 1181 (1 EORs Expected)

CallProcessInput on input ID 1181 on component "Sort" (1180) for view type 2

End Input Work list for input 1181

Output Work List

CreatePrimeBuffer of type 4 for output ID 1182.

SetBufferListener: "WorkThread1" for input ID 1304

CallPrimeOutput on component "Sort" (1180)

End Output Work List

End WorkThread0

WorkThread1

Drives: 1291

Influences: 1291

Input Work list, input ID 1304 (1 EORs Expected)

CallProcessInput on input ID 1304 on component "OLE DB Destination" (1291) for view type 5

End Input Work list for input 1304

Output Work List

End Output Work List

End WorkThread1

PipelineExecutionTrees

begin execution tree 0

output "OLE DB Source Output" (11)

input "Sort Input" (1181)

end execution tree 0

begin execution tree 1

output "OLE DB Source Error Output" (12)

end execution tree 1

begin execution tree 2

output "Sort Output" (1182)

input "OLE DB Destination Input" (1304)

output "OLE DB Destination Error Output" (1305)

end execution tree 2

PipelineInitialization

Es wurden keine temporären BLOB-Datenspeicherorte bereitgestellt. Der Puffer-Manager berücksichtigt die Verzeichnisse in den Umgebungsvariablen TEMP und TMP.

Die Standardpuffergröße beträgt 10485760 Bytes.

Puffer weisen standardmäßig 10000 Zeilen auf.

Nicht verwendete Komponenten werden vom Datenfluss nicht entfernt, da dessen RunInOptimizedMode-Eigenschaft auf False festgelegt ist.

Bei vielen Protokollereignissen werden mehrere Einträge in das Protokoll geschrieben, und die Meldungen für eine Reihe von Protokolleinträgen enthalten komplexe Daten. Damit es einfacher wird, den Inhalt komplexer Meldungen zu verstehen und zu kommunizieren, können Sie den Meldungstext analysieren. Je nach Speicherort des Protokolls können Sie Transact-SQL-Anweisungen oder Skriptkomponenten verwenden, um den komplexen Text in Spalten oder andere zweckmäßigere Formate zu zerlegen.

Die folgende Tabelle enthält z. B. die als Spalten analysierte Meldung "Die Zeilen wurden als Eingabe für eine Datenflusskomponente bereitgestellt. : : 1185 : Ausgabe der OLE DB-Quelle : 1180 : Sort : 1181 : Sortiereingabe : 76". Die Meldung wurde vom OnPipelineRowsSent-Ereignis geschrieben, als Zeilen von der OLE DB-Quelle an die Transformation zum Sortieren gesendet wurden.

Spalte

Beschreibung

Wert

PathID

Der Wert der ID-Eigenschaft des Pfads zwischen der OLE DB-Quelle und der Transformation zum Sortieren.

1185

PathName

Der Wert der Name-Eigenschaft des Pfads.

Ausgabe der OLE DB-Quelle

ComponentID

Der Wert der ID-Eigenschaft der Transformation zum Sortieren.

1180

ComponentName

Der Wert der Name-Eigenschaft der Transformation zum Sortieren.

Sortieren

InputID

Der Wert der ID-Eigenschaft der Eingabe der Transformation zum Sortieren.

1181

InputName

Der Wert der Name-Eigenschaft der Eingabe der Transformation zum Sortieren.

Sortiereingabe

RowsSent

Die Anzahl von Zeilen, die an die Eingabe der Transformation zum Sortieren gesendet wurden.

76

Quellen

Die folgenden Quellen verfügen über Eigenschaften, die mithilfe von Eigenschaftsausdrücken aktualisiert werden können:

Weitere Informationen finden Sie unter Benutzerdefinierte Eigenschaften von Quellen.

Transformationen

Ziele

Die folgenden Ziele verfügen über Eigenschaften, die mithilfe von Eigenschaftsausdrücken aktualisiert werden können:

Weitere Informationen finden Sie unter Benutzerdefinierte Eigenschaften von Zielen.

Konfigurieren des Datenflusstasks

Eigenschaften können Sie im Fenster Eigenschaften oder programmgesteuert festlegen.

Klicken Sie auf das folgende Thema, um weitere Informationen zum Festlegen dieser Eigenschaften im Fenster Eigenschaften zu erhalten:

Programmgesteuertes Konfigurieren des Datenflusstasks

Klicken Sie auf das folgende Thema, um weitere Informationen zum programmgesteuerten Hinzufügen von Datenflusstasks zu Paketen und zum Festlegen von Datenflusseigenschaften anzuzeigen:

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.