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 Transformationskomponente gezeigt, die die Zeilen und Spalten einer PipelineBuffer In ProcessInputbeschreibt.

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.  
         }  
      }  
      }  
   }  
}  

Im folgenden Beispiel wird eine Quellkomponente dargestellt, die Zeilen zum Ausgabepuffer in 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

Es PipelineBuffer handelt sich um einen zweidimensionalen Datenspeicher mit Zeilen und Spalten. Es wird von der Datenflussaufgabe erstellt und für verwaltete Datenflusskomponenten während der Ausführung bereitgestellt. Die spalten, die in einem Puffer enthalten sind, basieren auf den Spalten in den IDTSOutputColumnCollection100 Sammlungen der Komponenten im Diagramm.

Quellkomponenten und Komponenten mit asynchronen Ausgabeausgaben erhalten einen Puffer für jede der Ausgabeobjekte, die mit einer nachgelagerten Komponente verbunden sind. 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 SetEndOfRowset Methode beim Abschluss auf. Diese Methode legt den Wert der EndOfRowset Eigenschaft true auf den endgültigen Puffer fest. Der Datenflussvorgang stellt dann diesen Puffer für die nächste Komponente im Diagramm bereit.

Transformationskomponenten mit synchronen Ausgabeen und Zielkomponenten empfangen PipelineBuffer Objekte in der ProcessInput Methode. Der PipelineBuffer Empfangene in dieser Methode ist ein Input Puffer und enthält die Zeilen, die von vorgelagerten Komponenten hinzugefügt wurden. Dieser Puffer ist eingeschränkt und kann nicht zum Hinzufügen oder Entfernen von Zeilen aus dem Puffer verwendet werden.

Das PipelineBuffer wird in verwaltetem Code geschrieben und unterstützt verwaltete Datenflusskomponentenentwickler, indem Daten zwischen verwaltetem Code und dem zugrunde IDTSBuffer100 liegenden COM-Objekt ge marshallt werden.

Eine vollständige Liste der Integration Services-Datentypen und die entsprechenden Get und Set methoden der PipelineBuffer Klasse, die mit jedem 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 Zeile an eine PipelineBufferIDTSOutput100 Eigenschaft, deren IsErrorOut Eigenschaft wahr ist.

DirectErrorRow(Int32, Int32, Int32, Int32)

Sendet eine Zeile an eine PipelineBufferIDTSOutput100 Eigenschaft, deren IsErrorOut Eigenschaft wahr ist.

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 bool-Wert ab, der in der PipelineBuffer Spalte gespeichert ist.

GetByte(Int32)

Ruft den in der PipelineBuffer Spalte gespeicherten Bytewert ab.

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 PipelineBuffer Spalte gespeicherten DateTime-Wert ab.

GetDateTime(Int32)

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

GetDateTimeOffset(Int32)

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

GetDecimal(Int32)

Ruft den dezimalen Wert ab, der in der PipelineBuffer Spalte gespeichert ist.

GetDouble(Int32)

Ruft das Doppelte ab, das in der PipelineBuffer Spalte gespeichert ist.

GetGuid(Int32)

Ruft den guid-Wert ab, der in der PipelineBuffer Spalte gespeichert ist.

GetInt16(Int32)

Ruft die in der PipelineBuffer Spalte gespeicherte Kurze ab.

GetInt32(Int32)

Ruft das in einer PipelineBuffer Spalte gespeicherte Int ab.

GetInt64(Int32)

Ruft die lange, die in der PipelineBuffer Spalte gespeichert ist.

GetSByte(Int32)

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

GetSingle(Int32)

Ruft den in einer PipelineBuffer-Spalte gespeicherten Gleitkommawert ab.

GetString(Int32)

Ruft die in der Pufferspalte gespeicherte Zeichenfolge ab.

GetTime(Int32)

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

GetUInt16(Int32)

Ruft den in der Pufferspalte gespeicherten Ushort-Wert ab.

GetUInt32(Int32)

Ruft den in der Pufferspalte gespeicherten UInt32-Wert ab.

GetUInt64(Int32)

Ruft den in der Pufferspalte 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 einen Boolwert einer PipelineBuffer Spalte zu.

SetByte(Int32, Byte)

Weist einem Byte eine PipelineBuffer Spalte zu.

SetBytes(Int32, Byte[])

Weist einer Pufferspalte ein Bytearray zu.

SetDate(Int32, DateTime)

Weist dem PipelineBuffer Spaltenwert einen DateTime-Wert zu.

SetDateTime(Int32, DateTime)

Weist dem PipelineBuffer Spaltenwert einen DateTime-Wert zu.

SetDateTimeOffset(Int32, DateTimeOffset)

Weist dem Spaltenwert einen DateTimeOffset-Wert zu PipelineBuffer .

SetDecimal(Int32, Decimal)

Weist einer Pufferspalte eine Dezimalstelle zu.

SetDouble(Int32, Double)

Weist eine Doppelspalte 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 eine Guid einer Pufferspalte 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 null einer Pufferspalte 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 dem PipelineBuffer Spaltenwert einen TimeSpan-Wert zu.

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: