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 dans 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

Le PipelineBuffer est un magasin de données en mémoire à deux dimensions qui contient des lignes et des colonnes. Il est créé par la tâche de workflow et fourni aux composants de workflow de données géré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 source avec des sorties asynchrones reçoivent une mémoire tampon pour chacun des objets de sortie qui sont 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 une fois l’opération terminée. Cette méthode affecte à la propriété la valeur EndOfRowset true sur la mémoire tampon finale. La tâche de workflow 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. Le PipelineBuffer reçu dans cette méthode est une Input mémoire tampon et contient les lignes qui ont été ajoutées à par les composants en amont. Cette mémoire tampon est limitée et ne peut pas être utilisée pour ajouter ou supprimer des lignes dans la mémoire tampon.

Le PipelineBuffer est écrit en code managé et prend en charge les développeurs de composants de distribution 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 Integration Services types de données et les Get méthodes et correspondantes Set de la PipelineBuffer classe à utiliser avec chaque type de données, consultez utilisation des types de données dans le workflow.

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 actuelle

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 à un IDTSOutput100 dont la IsErrorOut propriété a la valeur true.

DirectErrorRow(Int32, Int32, Int32, Int32)

Envoie une PipelineBuffer ligne à un IDTSOutput100 dont la IsErrorOut propriété a la valeur true.

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 short stocké dans la PipelineBuffer colonne.

GetInt32(Int32)

Obtient l’entier 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 tampon.

GetTime(Int32)

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

GetUInt16(Int32)

Obtient la valeur UShort stockée dans la colonne tampon.

GetUInt32(Int32)

Obtient la valeur UInt32 stockée dans la colonne tampon.

GetUInt64(Int32)

Obtient la valeur ulong stockée dans la colonne 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)

Assigne 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)

Assigne une valeur DateTimeOffset à la PipelineBuffer colonne.

SetDecimal(Int32, Decimal)

Affecte une valeur décimale à une colonne tampon.

SetDouble(Int32, Double)

Affecte une valeur 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 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 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 à