PipelineBuffer Klasse

Definition

Bietet einen In-Memory-Datenspeicher mit Zeilen und Spalten von Daten.

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

Beispiele

Das folgende Beispiel zeigt eine Transformationskomponente, die die Zeilen und Spalten eines PipelineBuffer in ProcessInputiteriert.

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 Quellkomponente, die Zeilen zum Ausgabepuffer in PrimeOutputhinzufügt.

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

Das PipelineBuffer ist ein zweidimensionaler Datenspeicher im Speicher, der Zeilen und Spalten enthält. Sie wird von der Datenfluss-Aufgabe erstellt und während der Ausführung an verwaltete Datenflusskomponenten bereitgestellt. Die in einem Puffer enthaltenen Spalten basieren auf den Spalten in den IDTSOutputColumnCollection100 Sammlungen der Komponenten im Graphen.

Quellkomponenten und Komponenten mit asynchronen Ausgängen erhalten für jedes der Ausgabeobjekte, die mit einer nachgelagerten Komponente verbunden sind, einen Puffer. 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 SetEndOfRowset auf, wenn sie fertig ist. Diese Methode setzt den Wert der Eigenschaft EndOfRowset auf true den finalen Puffer. Die Datenflussaufgabe stellt diesen Puffer dann der nächsten Komponente im Graphen zur Verfügung.

Transformationskomponenten mit synchronen Ausgängen und Zielkomponenten empfangen PipelineBuffer Objekte in der Methode ProcessInput . Der in dieser Methode empfangene ist PipelineBuffer ein Input Puffer und enthält die Zeilen, zu denen von vorgelagerten Komponenten hinzugefügt wurde. Dieser Puffer ist eingeschränkt und kann nicht verwendet werden, um Zeilen aus dem Puffer hinzuzufügen oder zu entfernen.

Das ist PipelineBuffer in verwaltetem Code geschrieben und unterstützt Entwickler von verwalteten Datenflusskomponenten, indem Daten zwischen verwaltetem Code und dem zugrunde liegenden IDTSBuffer100 COM-Objekt zusammengeführt werden.

Für eine vollständige Liste der Integration Services-Datentypen sowie der entsprechenden Get Methoden und Set Methoden der PipelineBuffer Klasse, die mit jedem Datentyp verwendet werden sollen, siehe Working with Data Types in the Datenfluss.

Konstruktoren

Name Beschreibung
PipelineBuffer(IntPtr, PipelineBufferMode)

Instanziert eine neue Instanz des PipelineBuffer.

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

Initialisiert eine neue Instanz der PipelineBuffer-Klasse.

Eigenschaften

Name Beschreibung
ColumnCount

Erhält die Anzahl der Spalten in .PipelineBuffer

ColumnInfo

Erhält schreibgeschützte Metadaten zur Spalte.

CurrentRow

Erhält den Index der aktuellen Zeile in der PipelineBuffer.

EndOfRowset

Erhält einen Wert, der angibt, ob der Strom PipelineBuffer der endgültige Puffer ist.

Item[Int32]

Wert der angegebenen Spalte in der aktuellen Zeile

Mode

Erhält einen Wert, der angibt, ob a PipelineBuffer ein Puffer IDTSInput100 oder ein Puffer IDTSOutput100 ist.

RowCount

Erhält die Anzahl der Zeilen im PipelineBuffer Objekt.

RowSize

Erhält die Größe der Zeile im PipelineBuffer Objekt.

RowStarts

Das bekommt den Ausgangspunkt der Reihe.

Methoden

Name Beschreibung
AddBlobData(Int32, Byte[], Int32)

Fügt einer PipelineBuffer Spalte ein Array mit einer bestimmten Anzahl von Bytes hinzu.

AddBlobData(Int32, Byte[])

Fügt einer PipelineBuffer Spalte ein Array von Bytes hinzu.

AddRow()

Fügt dem Objekt eine Zeile hinzu PipelineBuffer .

DirectErrorRow(Int32, Int32, Int32, Int32)

Sendet eine PipelineBuffer Zeile an ein IDTSOutput100 , dessen IsErrorOut Eigenschaft wahr ist.

DirectErrorRow(Int32, Int32, Int32)

Sendet eine PipelineBuffer Zeile an ein IDTSOutput100 , dessen IsErrorOut Eigenschaft wahr ist.

DirectRow(Int32)

Sendet eine Zeile von a PipelineBuffer an die angegebene IDTSOutput100.

Dispose()

Gibt alle vom PipelineBufferverwendeten Ressourcen frei.

Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von der genutzt werden PipelineBuffer, und gibt optional die verwalteten Ressourcen frei.

Finalize()

Gibt alle vom PipelineBufferverwendeten Ressourcen frei.

GetBlobData(Int32, Int32, Int32)

Ruft ein Array von Bytes aus einem binären großen Objekt (BLOB) ab, das in einer Spalte PipelineBuffer gespeichert ist.

GetBlobLength(Int32)

Erhält die Anzahl der Bytes, die in einer binären Spalte für große Objekte (BLOB) PipelineBuffer enthalten sind.

GetBoolean(Int32)

Erhält den in der Spalte PipelineBuffer gespeicherten Bool-Wert.

GetByte(Int32)

Erhält den in der Spalte PipelineBuffer gespeicherten Byte-Wert.

GetBytes(Int32)

Erhält das Array der Bytes, das in einer Pufferspalte gespeichert ist.

GetColumnInfo(Int32)

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

GetDate(Int32)

Erhält den DateTime-Wert, der in der Spalte PipelineBuffer gespeichert ist.

GetDateTime(Int32)

Erhält den DateTime-Wert, der in der Spalte PipelineBuffer gespeichert ist.

GetDateTimeOffset(Int32)

Erhält den DateTimeOffset-Wert, der in der Spalte PipelineBuffer gespeichert ist.

GetDecimal(Int32)

Erhält den in der Spalte PipelineBuffer gespeicherten Dezimalwert.

GetDouble(Int32)

Das Doppelte wird in der Säule PipelineBuffer gelagert.

GetGuid(Int32)

Erhält den Guid-Wert, der in der Spalte PipelineBuffer gespeichert ist.

GetInt16(Int32)

Der Kurzfilm wird in der Spalte PipelineBuffer gespeichert.

GetInt32(Int32)

Das int wird in einer Spalte PipelineBuffer gespeichert.

GetInt64(Int32)

Das Lange wird in der PipelineBuffer Säule gespeichert.

GetSByte(Int32)

Erhält den SByte-Wert, der in einer Spalte PipelineBuffer gespeichert ist.

GetSingle(Int32)

So wird der Float in einer Säule PipelineBuffer gelagert.

GetString(Int32)

Erhält den String, der in der Pufferspalte gespeichert ist.

GetTime(Int32)

Erhält den TimeSpan-Wert, der in der Spalte PipelineBuffer gespeichert ist.

GetUInt16(Int32)

Erhält den Ushort-Wert, der in der Pufferspalte gespeichert ist.

GetUInt32(Int32)

Erhält den UInt32-Wert, der in der Pufferspalte gespeichert ist.

GetUInt64(Int32)

Erhält den ulong-Wert, der in der Pufferspalte gespeichert ist.

IsNull(Int32)

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

NextRow()

Zieht in PipelineBuffer die nächste Reihe vor.

RemoveRow()

Entfernt die aktuelle Zeile aus dem PipelineBuffer.

ResetBlobData(Int32)

Löscht den Inhalt der angegebenen BLOB-Spalte.

SetBoolean(Int32, Boolean)

Weist einer Spalte PipelineBuffer einen Bool-Wert zu.

SetByte(Int32, Byte)

Weist einer Spalte PipelineBuffer ein Byte zu.

SetBytes(Int32, Byte[])

Weist einem Pufferspalten ein Byte-Array zu.

SetDate(Int32, DateTime)

Weist der PipelineBuffer Spalte einen DateTime-Wert zu.

SetDateTime(Int32, DateTime)

Weist der PipelineBuffer Spalte einen DateTime-Wert zu.

SetDateTimeOffset(Int32, DateTimeOffset)

Weist der PipelineBuffer Spalte einen Wert DateTimeOffset zu.

SetDecimal(Int32, Decimal)

Weist einer Pufferspalte eine Dezimalzahl zu.

SetDouble(Int32, Double)

Weist einer Spalte PipelineBuffer ein Double zu.

SetEndOfRowset()

Benachrichtigt die PipelineBuffer Komponente, dass eine Komponente die Reihen zum Puffer hinzugefügt hat.

SetErrorInfo(Int32, Int32, Int32)

Setzt die Fehlerinformationen für die aktuelle PipelineBuffer Zeile.

SetGuid(Int32, Guid)

Weist eine Anleitung einer Pufferspalte zu.

SetInt16(Int32, Int16)

Weist einer Pufferspalte eine 16-Bit-unterschriebene Ganzzahl zu.

SetInt32(Int32, Int32)

Weist einer Pufferspalte eine 32-Bit-unterzeichnete Ganzzahl zu.

SetInt64(Int32, Int64)

Weist einer Pufferspalte eine 64-Bit-unterzeichnete Ganzzahl zu.

SetNull(Int32)

Weist einer Pufferspalte Null zu.

SetSByte(Int32, SByte)

Weist einer Pufferspalte eine signierte 8-Bit-Ganzzahl zu.

SetSingle(Int32, Single)

Weist einer Pufferspalte einen Float zu.

SetString(Int32, String)

Weist einer Pufferspalte eine Zeichenkette zu.

SetTime(Int32, TimeSpan)

Weist der PipelineBuffer Spalte einen TimeSpan-Wert zu.

SetUInt16(Int32, UInt16)

Weist einer Pufferspalte eine unsignierte 16-Bit-Ganzzahl zu.

SetUInt32(Int32, UInt32)

Weist einer Pufferspalte eine unsignierte 32-Bit-Ganzzahl zu.

SetUInt64(Int32, UInt64)

Weist einer Pufferspalte eine unsignierte 64-Bit-Ganzzahl zu.

Gilt für: