PipelineBuffer Klasse

Definition

Stellt einen Datenspeicher im Arbeitsspeicher bereit, der Datenzeilen und -spalten enthält.

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
Vererbung
PipelineBuffer
Implementiert

Beispiele

Im folgenden Beispiel wird eine Transformations Komponente gezeigt, die die Zeilen und Spalten eines in durchläuft PipelineBuffer ProcessInput .

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

namespace Microsoft.Samples.SqlServer.Dts  
{  
   [DtsPipelineComponent  
   (  
   DisplayName="SampleComponent",  
   ComponentType=ComponentType.Transform  
   )]  
   public class SampleComponent: PipelineComponent  
   {  
      public override void ProvideComponentProperties()  
      {  
         base.ProvideComponentProperties();  

         ///Name the input and output add by the base class.  
         ComponentMetaData.InputCollection[0].Name = "SampleInput";  
         ComponentMetaData.OutputCollection[0].Name = "SampleOutput";  
      }  

      public override void ProcessInput(int inputID, PipelineBuffer buffer)  
      {  

      IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);  

      while (buffer.NextRow())  
      {  
         foreach (IDTSInputColumn100 col in input.InputColumnCollection)  
         {  
            int colIndex = BufferManager.FindColumnByLineageID(input.Buffer,col.LineageID);  
            object colData = buffer[colIndex];  
            //TODO: Do something with the column data.  
         }  
      }  
      }  
   }  
}  

Das folgende Beispiel zeigt eine Quell Komponente, mit der dem Ausgabepuffer in Zeilen hinzugefügt werden PrimeOutput .

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

namespace Microsoft.Samples.SqlServer.Dts  
{  
   [DtsPipelineComponent  
   (  
      DisplayName="SampleComponent",  
      ComponentType=ComponentType.SourceComponent  
)]  
   public class SampleComponent: PipelineComponent  
   {  
      public override void PrimeOutput(int outputs, int[] outputIDs,PipelineBuffer[] buffers)  
      {  
         int rows = 100;  
         PipelineBuffer buf = buffers[0];  
         IDTSOutput100 output = ComponentMetaData.OutputCollection[0];  
         Random rand = new Random();  

         //Loop rows number of times  
         for(int r = 0; r < rows; r++)  
         {  
            buf.AddRow();  
            foreach( IDTSOutputColumn100 col in output.OutputColumnCollection)  
            {  
               int colIndex = BufferManager.FindColumnByLineageID( output.Buffer, col.LineageID);  
               // Note, buffer columns containing binary large objects  
               // can not be set using the following syntax. Instead,  
               // the AddBlobData and SetBytes methods are used.  
               buf[colIndex] = rand.Next();  
            }  
         }  
         buf.SetEndOfRowset();  
      }  
   }  
}  

Hinweise

Der PipelineBuffer ist ein zweidimensionaler Datenspeicher im Arbeitsspeicher, der Zeilen und Spalten enthält. Sie wird vom Datenfluss Task erstellt und während der Ausführung für verwaltete Datenfluss Komponenten bereitgestellt. Die in einem Puffer enthaltenen Spalten basieren auf den Spalten in den Auflistungen der IDTSOutputColumnCollection100 Komponenten im Diagramm.

Quell Komponenten und Komponenten mit asynchronen Ausgaben erhalten einen Puffer für jedes Ausgabe Objekt, das mit einer Downstreamkomponente verbunden ist. Diese Puffer werden als Ausgabepuffer bezeichnet und enthalten keine Zeilen. Die Komponente, die den Ausgabepuffer empfängt, fügt dem Puffer Zeilen hinzu und ruft die-Methode auf, SetEndOfRowset Wenn Sie abgeschlossen ist. Diese Methode legt den Wert der- EndOfRowset Eigenschaft true auf den letzten Puffer fest. Der Datenfluss Task stellt dann den Puffer für die nächste Komponente im Diagramm bereit.

Transformations Komponenten mit synchronen Ausgaben und Ziel Komponenten empfangen- PipelineBuffer Objekte in der- ProcessInput Methode. Die PipelineBuffer in dieser Methode empfangene ist ein Input Puffer und enthält die Zeilen, die von Upstreamkomponenten zu hinzugefügt wurden. Dieser Puffer ist eingeschränkt und kann nicht zum Hinzufügen oder Entfernen von Zeilen aus dem Puffer verwendet werden.

Der PipelineBuffer wird in verwaltetem Code geschrieben und unterstützt Entwickler von verwalteten Datenfluss Komponenten durch Marshalling von Daten zwischen verwaltetem Code und dem zugrunde liegenden IDTSBuffer100 com-Objekt.

Eine umfassende Liste der Integration Services Datentypen und die entsprechenden Get -und- Set Methoden der-Klasse, die für PipelineBuffer jeden Datentyp verwendet werden sollen, finden Sie unter Arbeiten mit Datentypen im Datenfluss.

Konstruktoren

PipelineBuffer(IntPtr, PipelineBufferMode)

Instanziiert eine neue Instanz von PipelineBuffer.

PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean)

Initialisiert eine neue Instanz der PipelineBuffer-Klasse.

Eigenschaften

ColumnCount

Ruft die Anzahl der Spalten in PipelineBuffer ab.

ColumnInfo

Ruft schreibgeschützte Metadaten zur Spalte ab.

CurrentRow

Ruft den Index der aktuellen Zeile in PipelineBuffer ab.

EndOfRowset

Ruft einen Wert ab, der angibt, ob der aktuelle PipelineBuffer der endgültige Puffer ist.

Item[Int32]

Wert der angegebenen Spalte in der aktuellen Zeile

Mode

Ruft einen Wert ab, der angibt, ob ein PipelineBuffer ein IDTSInput100-Puffer oder ein IDTSOutput100-Puffer ist.

RowCount

Ruft die Anzahl der Zeilen im PipelineBuffer-Objekt ab.

RowSize

Ruft die Größe der Zeile im PipelineBuffer-Objekt ab

RowStarts

Ruft den Ausgangspunkt der Zeile ab

Methoden

AddBlobData(Int32, Byte[])

Fügt einer PipelineBuffer-Spalte ein Bytearray hinzu.

AddBlobData(Int32, Byte[], Int32)

Fügt einer PipelineBuffer-Spalte ein Array aus einer angegebenen Anzahl von Bytes hinzu.

AddRow()

Fügt dem PipelineBuffer-Objekt eine Zeile hinzu.

DirectErrorRow(Int32, Int32, Int32)

Sendet eine PipelineBuffer Zeile an eine, deren-Eigenschaft den Wert IDTSOutput100 IsErrorOut true hat.

DirectErrorRow(Int32, Int32, Int32, Int32)

Sendet eine PipelineBuffer Zeile an eine, deren-Eigenschaft den Wert IDTSOutput100 IsErrorOut true hat.

DirectRow(Int32)

Sendet eine Zeile aus PipelineBuffer an die angegebene IDTSOutput100.

Dispose()

Gibt alle vom PipelineBuffer verwendeten Ressourcen frei.

Dispose(Boolean)

Gibt die von PipelineBuffer verwendeten, nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

Finalize()

Gibt alle vom PipelineBuffer verwendeten Ressourcen frei.

GetBlobData(Int32, Int32, Int32)

Ruft ein Bytearray aus einem in einer PipelineBuffer-Spalte gespeicherten BLOB (Binary Large Object) ab.

GetBlobLength(Int32)

Ruft die Anzahl der in BLOB-Daten (Binary Large Object) einer PipelineBuffer-Spalte enthaltenen Bytes ab.

GetBoolean(Int32)

Ruft den booleschen Wert ab, der in der Spalte gespeichert wird PipelineBuffer .

GetByte(Int32)

Ruft den in der Spalte gespeicherten Bytewert ab PipelineBuffer .

GetBytes(Int32)

Ruft das in einer Pufferspalte gespeicherte Bytearray ab.

GetColumnInfo(Int32)

Ruft die BufferColumn-Struktur für eine PipelineBuffer-Spalte ab.

GetDate(Int32)

Ruft den in der Spalte gespeicherten DateTime-Wert ab PipelineBuffer .

GetDateTime(Int32)

Ruft den in der Spalte gespeicherten DateTime-Wert ab PipelineBuffer .

GetDateTimeOffset(Int32)

Ruft den DateTimeOffset-Wert ab, der in der Spalte gespeichert wird PipelineBuffer .

GetDecimal(Int32)

Ruft den in der Spalte gespeicherten Dezimalwert ab PipelineBuffer .

GetDouble(Int32)

Ruft den in der Spalte gespeicherten doppelten ab PipelineBuffer .

GetGuid(Int32)

Ruft den GUID-Wert ab, der in der Spalte gespeichert wird PipelineBuffer .

GetInt16(Int32)

Ruft den in der Spalte gespeicherten kurzen ab PipelineBuffer .

GetInt32(Int32)

Ruft den in einer-Spalte gespeicherten int-ab PipelineBuffer .

GetInt64(Int32)

Ruft den in der Spalte gespeicherten Long-ab PipelineBuffer .

GetSByte(Int32)

Ruft den in einer-Spalte gespeicherten SByte-Wert ab PipelineBuffer .

GetSingle(Int32)

Ruft den in einer PipelineBuffer-Spalte gespeicherten Gleitkommawert ab.

GetString(Int32)

Ruft die in der Puffer Spalte gespeicherte Zeichenfolge ab.

GetTime(Int32)

Ruft den in der Spalte gespeicherten TimeSpan-Wert ab PipelineBuffer .

GetUInt16(Int32)

Ruft den in der Puffer Spalte gespeicherten ushort-Wert ab.

GetUInt32(Int32)

Ruft den in der Puffer Spalte gespeicherten UInt32-Wert ab.

GetUInt64(Int32)

Ruft den in der Puffer Spalte gespeicherten ulong-Wert ab.

IsNull(Int32)

Überprüft, ob die Daten in einer Pufferspalte NULL sind.

NextRow()

Setzt PipelineBuffer auf die nächste Zeile.

RemoveRow()

Entfernt die aktuelle Zeile aus PipelineBuffer.

ResetBlobData(Int32)

Löscht den Inhalt der angegebenen BLOB-Spalte.

SetBoolean(Int32, Boolean)

Weist einer Spalte einen booleschen Wert zu PipelineBuffer .

SetByte(Int32, Byte)

Weist einer Spalte ein Byte zu PipelineBuffer .

SetBytes(Int32, Byte[])

Weist einer Pufferspalte ein Bytearray zu.

SetDate(Int32, DateTime)

Weist der Spalte einen DateTime-Wert zu PipelineBuffer .

SetDateTime(Int32, DateTime)

Weist der Spalte einen DateTime-Wert zu PipelineBuffer .

SetDateTimeOffset(Int32, DateTimeOffset)

Weist der Spalte einen DateTimeOffset-Wert zu PipelineBuffer .

SetDecimal(Int32, Decimal)

Weist einer Puffer Spalte ein Dezimaltrennzeichen zu.

SetDouble(Int32, Double)

Weist einer Spalte ein Double zu PipelineBuffer .

SetEndOfRowset()

Benachrichtigt PipelineBuffer darüber, dass dem Puffer von einer Komponente keine Zeilen mehr hinzugefügt werden.

SetErrorInfo(Int32, Int32, Int32)

Legt die Fehlerinformationen für die aktuelle PipelineBuffer-Zeile fest.

SetGuid(Int32, Guid)

Weist einer Puffer Spalte eine GUID zu.

SetInt16(Int32, Int16)

Weist einer Pufferspalte eine 16-Bit-Ganzzahl mit Vorzeichen zu.

SetInt32(Int32, Int32)

Weist einer Pufferspalte eine 32-Bit-Integer mit Vorzeichen zu

SetInt64(Int32, Int64)

Weist einer Pufferspalte einen 64-Bit-Integer mit Vorzeichen zu

SetNull(Int32)

Weist einer Puffer Spalte einen NULL-Wert zu.

SetSByte(Int32, SByte)

Weist einer Pufferspalte eine 8-Bit-Ganzzahl mit Vorzeichen zu.

SetSingle(Int32, Single)

Weist einer Pufferspalte einen Gleitkommawert zu.

SetString(Int32, String)

Weist einer Pufferspalte eine Zeichenfolge zu.

SetTime(Int32, TimeSpan)

Weist der Spalte einen TimeSpan-Wert zu PipelineBuffer .

SetUInt16(Int32, UInt16)

Weist einer Pufferspalte eine 16-Bit-Ganzzahl ohne Vorzeichen zu.

SetUInt32(Int32, UInt32)

Weist einer Pufferspalte eine 32-Bit-Ganzzahl ohne Vorzeichen zu

SetUInt64(Int32, UInt64)

Weist einer Pufferspalte einen 64-Bit-Integer ohne Vorzeichen zu

Gilt für: