Freigeben über


PipelineBuffer-Klasse

Provides an in-memory data store containing rows and columns of data.

Vererbungshierarchie

System.Object
  Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer

Namespace:  Microsoft.SqlServer.Dts.Pipeline
Assembly:  Microsoft.SqlServer.PipelineHost (in Microsoft.SqlServer.PipelineHost.dll)

Syntax

'Declaration
Public Class PipelineBuffer _
    Implements IDisposable
'Usage
Dim instance As PipelineBuffer
public class PipelineBuffer : IDisposable
public ref class PipelineBuffer : IDisposable
type PipelineBuffer =  
    class 
        interface IDisposable 
    end
public class PipelineBuffer implements IDisposable

Der PipelineBuffer-Typ macht folgende Elemente verfügbar.

Konstruktoren

  Name Beschreibung
Geschützte Methode PipelineBuffer(IntPtr, PipelineBufferMode) Instantiates a new instance of the PipelineBuffer.
Öffentliche Methode PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean)

Zum Anfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft ColumnCount Gets the number of columns in the PipelineBuffer.
Öffentliche Eigenschaft ColumnInfo
Öffentliche Eigenschaft CurrentRow Gets the index of the current row in the PipelineBuffer.
Öffentliche Eigenschaft EndOfRowset Gets a value indicating whether the current PipelineBuffer is the final buffer.
Öffentliche Eigenschaft Item Gets the data stored in a buffer column.
Öffentliche Eigenschaft Mode Gets a value indicating whether a PipelineBuffer is an IDTSInput100 buffer or an IDTSOutput100 buffer.
Öffentliche Eigenschaft RowCount Gets the number of rows in the PipelineBuffer object.
Öffentliche Eigenschaft RowSize
Öffentliche Eigenschaft RowStarts

Zum Anfang

Methoden

  Name Beschreibung
Öffentliche Methode AddBlobData(Int32, array<Byte[]) Adds an array of bytes to a PipelineBuffer column.
Öffentliche Methode AddBlobData(Int32, array<Byte[], Int32) Adds an array of a specified number of bytes to a PipelineBuffer column.
Öffentliche Methode AddRow Adds a row to the PipelineBuffer object.
Öffentliche Methode DirectErrorRow(Int32, Int32, Int32) Sends a PipelineBuffer row to an IDTSOutput100 whose IsErrorOut property is true.
Öffentliche Methode DirectErrorRow(Int32, Int32, Int32, Int32) Sends a PipelineBuffer row to an IDTSOutput100 whose IsErrorOut property is true.
Öffentliche Methode DirectRow Sends a row from a PipelineBuffer to the specified IDTSOutput100.
Öffentliche Methode Dispose() Releases all resources used by the PipelineBuffer.
Geschützte Methode Dispose(Boolean) Releases the unmanaged resources that are used by the PipelineBuffer, and optionally releases the managed resources.
Öffentliche Methode Equals (Geerbt von Object.)
Geschützte Methode Finalize Releases all resources used by the PipelineBuffer. (Überschreibt Object.Finalize().)
Öffentliche Methode GetBlobData Retrieves an array of bytes from a binary large object (BLOB) stored in a PipelineBuffer column.
Öffentliche Methode GetBlobLength Gets the number of bytes contained in a binary large object (BLOB) PipelineBuffer column.
Öffentliche Methode GetBoolean Gets the bool value stored in the PipelineBuffer column.
Öffentliche Methode GetByte Gets the byte value stored in the PipelineBuffer column.
Öffentliche Methode GetBytes Gets the array of bytes stored in a buffer column.
Öffentliche Methode GetColumnInfo Retrieves the BufferColumn structure for a PipelineBuffer column.
Öffentliche Methode GetDate Gets the DateTime value stored in the PipelineBuffer column.
Öffentliche Methode GetDateTime Gets the DateTime value stored in the PipelineBuffer column.
Öffentliche Methode GetDateTimeOffset Gets the DateTimeOffset value stored in the PipelineBuffer column.
Öffentliche Methode GetDecimal Gets the decimal value stored in the PipelineBuffer column.
Öffentliche Methode GetDouble Gets the double stored in the PipelineBuffer column.
Öffentliche Methode GetGuid Gets the Guid value stored in the PipelineBuffer column.
Öffentliche Methode GetHashCode (Geerbt von Object.)
Öffentliche Methode GetInt16 Gets the short stored in the PipelineBuffer column.
Öffentliche Methode GetInt32 Gets the int stored in a PipelineBuffer column.
Öffentliche Methode GetInt64 Gets the long stored in the PipelineBuffer column.
Öffentliche Methode GetSByte Gets the SByte value stored in a PipelineBuffer column.
Öffentliche Methode GetSingle Gets the float stored in a PipelineBuffer column.
Öffentliche Methode GetString Gets the string stored in the buffer column.
Öffentliche Methode GetTime Gets the TimeSpan value stored in the PipelineBuffer column.
Öffentliche Methode GetType (Geerbt von Object.)
Öffentliche Methode GetUInt16 Gets the ushort value stored in the buffer column.
Öffentliche Methode GetUInt32 Gets the UInt32 value stored in the buffer column.
Öffentliche Methode GetUInt64 Gets the ulong value stored in the buffer column.
Öffentliche Methode IsNull Checks to see if the data in a buffer column is null.
Geschützte Methode MemberwiseClone (Geerbt von Object.)
Öffentliche Methode NextRow Advances the PipelineBuffer to the next row.
Öffentliche Methode RemoveRow Removes the current row from the PipelineBuffer.
Öffentliche Methode ResetBlobData Deletes the contents of the specified BLOB column.
Öffentliche Methode SetBoolean Assigns a bool value to a PipelineBuffer column.
Öffentliche Methode SetByte Assigns a byte to a PipelineBuffer column.
Öffentliche Methode SetBytes Assigns an array of bytes to a buffer column.
Öffentliche Methode SetDate Assigns a DateTime value to the PipelineBuffer column.
Öffentliche Methode SetDateTime Assigns a DateTime value to the PipelineBuffer column.
Öffentliche Methode SetDateTimeOffset Assigns a DateTimeOffset value to the PipelineBuffer column.
Öffentliche Methode SetDecimal Assigns a decimal to a buffer column.
Öffentliche Methode SetDouble Assigns a double to a PipelineBuffer column.
Öffentliche Methode SetEndOfRowset Notifies the PipelineBuffer that a component has finished adding rows to the buffer.
Öffentliche Methode SetErrorInfo Sets the error information for the current PipelineBuffer row.
Öffentliche Methode SetGuid Assigns a Guid to a buffer column.
Öffentliche Methode SetInt16 Assigns a 16-bit signed integer to a buffer column.
Öffentliche Methode SetInt32 Assigns a 32-bit signed integer to a buffer column.
Öffentliche Methode SetInt64 Assigns a 64-bit signed integer to a buffer column.
Öffentliche Methode SetNull Assigns nullein NULL-Verweis (Nothing in Visual Basic) to a buffer column.
Öffentliche Methode SetSByte Assigns a signed 8-bit integer to a buffer column.
Öffentliche Methode SetSingle Assigns a float to a buffer column.
Öffentliche Methode SetString Assigns a string to a buffer column.
Öffentliche Methode SetTime Assigns a TimeSpan value to the PipelineBuffer column.
Öffentliche Methode SetUInt16 Assigns an unsigned 16-bit integer to a buffer column.
Öffentliche Methode SetUInt32 Assigns an unsigned 32-bit integer to a buffer column.
Öffentliche Methode SetUInt64 Assigns an unsigned 64-bit integer to a buffer column.
Öffentliche Methode ToString (Geerbt von Object.)

Zum Anfang

Hinweise

The PipelineBuffer is an in-memory two-dimensional data store containing rows and columns. It is created by the data flow task and supplied to managed data flow components during execution. The columns contained in a buffer are based on the columns in the IDTSOutputColumnCollection100 collections of the components in the graph.

Source components and components with asynchronous outputs receive a buffer for each of the output objects that are connected to a downstream component. These buffers are referred to as output buffers and do not contain rows. The component that receives the output buffer adds rows to the buffer and calls the SetEndOfRowset method when finished. This method sets the value of the EndOfRowset property to true on the final buffer. The data flow task then provides that buffer to the next component in the graph.

Transformation components with synchronous outputs and destination components receive PipelineBuffer objects in the ProcessInput method. The PipelineBuffer received in this method is an Input buffer and contains the rows that were added to by upstream components. This buffer is restricted and cannot be used to add or remove rows from the buffer.

The PipelineBuffer is written in managed code and supports managed data flow component developers by marshalling data between managed code and the underlying IDTSBuffer100 COM object.

For a complete list of Integration Services data types and the corresponding Get and Set methods of the PipelineBuffer class to use with each data type, see Verwenden von Datentypen im Datenfluss.

Beispiele

The following example shows a transformation component that iterates the rows and columns of a PipelineBuffer in 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.
         }
      }
      }
   }
}

The following example shows a source component that adds rows to the output buffer 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();
      }
   }
}

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Elemente dieses Typs sind Threadsicher. Für Instanzelemente wird die Threadsicherheit nicht gewährleistet.

Siehe auch

Verweis

Microsoft.SqlServer.Dts.Pipeline-Namespace