PipelineBuffer Classe

Définition

Fournit une banque de données en mémoire qui contient des lignes et des colonnes de données.

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
Héritage
PipelineBuffer
Implémente

Exemples

L’exemple suivant montre un composant de transformation qui itère les lignes et les colonnes d’un 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.  
         }  
      }  
      }  
   }  
}  

L’exemple suivant montre un composant source qui ajoute des lignes à la mémoire tampon de sortie dans 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();  
      }  
   }  
}  

Remarques

Il PipelineBuffer s’agit d’un magasin de données bidimensionnel en mémoire contenant des lignes et des colonnes. Il est créé par la tâche de flux de données et fourni aux composants de flux de données managés pendant l’exécution. Les colonnes contenues dans une mémoire tampon sont basées sur les colonnes des IDTSOutputColumnCollection100 collections des composants du graphique.

Les composants et composants sources avec sorties asynchrones reçoivent une mémoire tampon pour chacun des objets de sortie connectés à un composant en aval. Ces mémoires tampons sont appelées mémoires tampons de sortie et ne contiennent pas de lignes. Le composant qui reçoit la mémoire tampon de sortie ajoute des lignes à la mémoire tampon et appelle la SetEndOfRowset méthode lorsque vous avez terminé. Cette méthode définit la valeur de la EndOfRowset propriété true sur la mémoire tampon finale. La tâche de flux de données fournit ensuite cette mémoire tampon au composant suivant dans le graphique.

Les composants de transformation avec des sorties synchrones et des composants de destination reçoivent PipelineBuffer des objets dans la ProcessInput méthode. La PipelineBuffer réception de cette méthode est une Input mémoire tampon et contient les lignes ajoutées par les composants en amont. Cette mémoire tampon est restreinte et ne peut pas être utilisée pour ajouter ou supprimer des lignes de la mémoire tampon.

Il PipelineBuffer est écrit dans le code managé et prend en charge les développeurs de composants de flux de données managés en marshalant les données entre le code managé et l’objet COM sous-jacent IDTSBuffer100 .

Pour obtenir la liste complète des types de données Integration Services et des méthodes correspondantes GetSet de la PipelineBuffer classe à utiliser avec chaque type de données, consultez Utilisation des types de données dans le Data Flow.

Constructeurs

PipelineBuffer(IntPtr, PipelineBufferMode)

Instancie une nouvelle instance de l'objet PipelineBuffer.

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

Initialise une nouvelle instance de la classe PipelineBuffer.

Propriétés

ColumnCount

Obtient le nombre de colonnes dans l'objet PipelineBuffer.

ColumnInfo

Obtient des métadonnées en lecture seule sur la colonne.

CurrentRow

Obtient l'index de la ligne actuelle dans l'objet PipelineBuffer.

EndOfRowset

Obtient une valeur qui indique si l'objet PipelineBuffer actuel est la mémoire tampon finale.

Item[Int32]

Valeur de la colonne spécifiée dans la ligne active

Mode

Obtient une valeur qui indique si un objet PipelineBuffer est une mémoire tampon IDTSInput100 ou IDTSOutput100.

RowCount

Obtient le nombre de lignes de l'objet PipelineBuffer.

RowSize

Obtient la taille de la ligne dans l’objet PipelineBuffer.

RowStarts

Obtient le point de départ de la ligne.

Méthodes

AddBlobData(Int32, Byte[])

Ajoute un tableau d'octets à une colonne PipelineBuffer.

AddBlobData(Int32, Byte[], Int32)

Ajoute un tableau d'un nombre spécifié d'octets à une colonne PipelineBuffer.

AddRow()

Ajoute une ligne à l'objet PipelineBuffer.

DirectErrorRow(Int32, Int32, Int32)

Envoie une PipelineBuffer ligne à une IDTSOutput100 propriété dont IsErrorOut la propriété est vraie.

DirectErrorRow(Int32, Int32, Int32, Int32)

Envoie une PipelineBuffer ligne à une IDTSOutput100 propriété dont IsErrorOut la propriété est vraie.

DirectRow(Int32)

Envoie une ligne d'un objet PipelineBuffer à l'objet IDTSOutput100 spécifié.

Dispose()

Libère toutes les ressources utilisées par PipelineBuffer.

Dispose(Boolean)

Libère les ressources non managées utilisées par l'objet PipelineBuffer et libère éventuellement les ressources managées.

Finalize()

Libère toutes les ressources utilisées par PipelineBuffer.

GetBlobData(Int32, Int32, Int32)

Récupère un tableau d'octets d'un objet BLOB (Binary Large Object) stocké dans une colonne PipelineBuffer.

GetBlobLength(Int32)

Obtient le nombre d'octets contenus dans une colonne PipelineBuffer d'objet BLOB (Binary Large Object).

GetBoolean(Int32)

Obtient la valeur bool stockée dans la PipelineBuffer colonne.

GetByte(Int32)

Obtient la valeur d’octet stockée dans la PipelineBuffer colonne.

GetBytes(Int32)

Obtient le tableau d'octets stocké dans une colonne tampon.

GetColumnInfo(Int32)

Récupère la structure BufferColumn pour une colonne PipelineBuffer.

GetDate(Int32)

Obtient la valeur DateTime stockée dans la PipelineBuffer colonne.

GetDateTime(Int32)

Obtient la valeur DateTime stockée dans la PipelineBuffer colonne.

GetDateTimeOffset(Int32)

Obtient la valeur DateTimeOffset stockée dans la PipelineBuffer colonne.

GetDecimal(Int32)

Obtient la valeur décimale stockée dans la PipelineBuffer colonne.

GetDouble(Int32)

Obtient le double stocké dans la PipelineBuffer colonne.

GetGuid(Int32)

Obtient la valeur GUID stockée dans la PipelineBuffer colonne.

GetInt16(Int32)

Obtient le court stocké dans la PipelineBuffer colonne.

GetInt32(Int32)

Obtient l’int stocké dans une PipelineBuffer colonne.

GetInt64(Int32)

Obtient le long stocké dans la PipelineBuffer colonne.

GetSByte(Int32)

Obtient la valeur SByte stockée dans une PipelineBuffer colonne.

GetSingle(Int32)

Obtient la valeur flottante stockée dans une colonne PipelineBuffer.

GetString(Int32)

Obtient la chaîne stockée dans la colonne de mémoire tampon.

GetTime(Int32)

Obtient la valeur TimeSpan stockée dans la PipelineBuffer colonne.

GetUInt16(Int32)

Obtient la valeur ushort stockée dans la colonne de mémoire tampon.

GetUInt32(Int32)

Obtient la valeur UInt32 stockée dans la colonne de mémoire tampon.

GetUInt64(Int32)

Obtient la valeur ulong stockée dans la colonne de mémoire tampon.

IsNull(Int32)

Vérifie si les données dans une colonne tampon sont Null.

NextRow()

Fait avancer le PipelineBuffer jusqu'à la ligne suivante.

RemoveRow()

Supprime la ligne actuelle de l'objet PipelineBuffer.

ResetBlobData(Int32)

Supprime le contenu de la colonne BLOB spécifiée.

SetBoolean(Int32, Boolean)

Affecte une valeur bool à une PipelineBuffer colonne.

SetByte(Int32, Byte)

Affecte un octet à une PipelineBuffer colonne.

SetBytes(Int32, Byte[])

Affecte un tableau d'octets à une colonne tampon.

SetDate(Int32, DateTime)

Affecte une valeur DateTime à la PipelineBuffer colonne.

SetDateTime(Int32, DateTime)

Affecte une valeur DateTime à la PipelineBuffer colonne.

SetDateTimeOffset(Int32, DateTimeOffset)

Affecte une valeur DateTimeOffset à la PipelineBuffer colonne.

SetDecimal(Int32, Decimal)

Affecte une décimale à une colonne de mémoire tampon.

SetDouble(Int32, Double)

Affecte un double à une PipelineBuffer colonne.

SetEndOfRowset()

Notifie l'objet PipelineBuffer qu'un composant a terminé d'ajouter des lignes à la mémoire tampon.

SetErrorInfo(Int32, Int32, Int32)

Définit les informations d'erreur pour la ligne PipelineBuffer actuelle.

SetGuid(Int32, Guid)

Affecte un GUID à une colonne de mémoire tampon.

SetInt16(Int32, Int16)

Affecte un entier 16 bits signé à une colonne tampon.

SetInt32(Int32, Int32)

Affecte un entier 32 bits signé à une colonne tampon.

SetInt64(Int32, Int64)

Affecte un entier 64 bits signé à une colonne tampon.

SetNull(Int32)

Affecte la valeur Null à une colonne de mémoire tampon.

SetSByte(Int32, SByte)

Affecte un entier 8 bits signé à une colonne tampon.

SetSingle(Int32, Single)

Affecte une valeur float à une colonne tampon.

SetString(Int32, String)

Affecte une chaîne à une colonne tampon.

SetTime(Int32, TimeSpan)

Affecte une valeur TimeSpan à la PipelineBuffer colonne.

SetUInt16(Int32, UInt16)

Affecte un entier 16 bits non signé à une colonne tampon.

SetUInt32(Int32, UInt32)

Affecte un entier 32 bits non signé à une colonne tampon.

SetUInt64(Int32, UInt64)

Affecte un entier 64 bits non signé à une colonne tampon.

S’applique à