PipelineBuffer Classe

Définition

Fournit un magasin de données en mémoire contenant 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 colonnes de a 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 au 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 gérés lors de l’exécution. Les colonnes contenues dans un tampon sont basées sur les colonnes des IDTSOutputColumnCollection100 collections des composantes du graphe.

Les composants source et les composants avec des sorties asynchrones reçoivent un tampon pour chacun des objets de sortie connectés à un composant en aval. Ces tampons sont appelés tampons de sortie et ne contiennent pas de lignes. Le composant qui reçoit le tampon de sortie ajoute des lignes au tampon et appelle la SetEndOfRowset méthode une fois terminée. Cette méthode fixe la valeur de la EndOfRowset propriété à true sur le tampon final. La tâche de flux de données fournit alors ce tampon vers le composant suivant du graphe.

Les composantes de transformation avec sorties synchrones et composantes de destination reçoivent PipelineBuffer des objets dans la ProcessInput méthode. Le PipelineBuffer reçu dans cette méthode est un Input tampon et contient les lignes ajoutées par les composants en amont. Ce tampon est restreint et ne peut pas être utilisé pour ajouter ou retirer des lignes du tampon.

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

Pour une liste complète des types de données des Services d’intégration ainsi que des méthodes correspondantes GetSet de la PipelineBuffer classe à utiliser avec chaque type de données, voir Travailler avec les types de données dans le Data Flow.

Constructeurs

Nom Description
PipelineBuffer(IntPtr, PipelineBufferMode)

Instancie une nouvelle instance du PipelineBuffer.

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

Initialise une nouvelle instance de la classe PipelineBuffer.

Propriétés

Nom Description
ColumnCount

Obtient le nombre de colonnes dans le PipelineBuffer.

ColumnInfo

Reçoit des métadonnées en lecture seule sur la colonne.

CurrentRow

Obtient l’index de la ligne courante dans le PipelineBuffer.

EndOfRowset

Obtient une valeur indiquant si le courant PipelineBuffer est le tampon final.

Item[Int32]

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

Mode

Obtient une valeur indiquant si a PipelineBuffer est un IDTSInput100 tampon ou un IDTSOutput100 tampon.

RowCount

Ça obtient le nombre de lignes dans l’objet PipelineBuffer .

RowSize

Ça obtient la taille de la rangée dans l’objet PipelineBuffer .

RowStarts

Ça obtient le point de départ de la rangée.

Méthodes

Nom Description
AddBlobData(Int32, Byte[], Int32)

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

AddBlobData(Int32, Byte[])

Ajoute un tableau d’octets à une PipelineBuffer colonne.

AddRow()

Ajoute une ligne à l’objet PipelineBuffer .

DirectErrorRow(Int32, Int32, Int32, Int32)

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

DirectErrorRow(Int32, Int32, Int32)

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

DirectRow(Int32)

Envoie une ligne de a PipelineBuffer à la spécifiée IDTSOutput100.

Dispose()

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

Dispose(Boolean)

Libère les ressources non gérées utilisées par le PipelineBuffer, et libère optionnellement les ressources gérées.

Finalize()

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

GetBlobData(Int32, Int32, Int32)

Récupère un tableau d’octets à partir d’un objet binaire grand (BLOB) stocké dans une PipelineBuffer colonne.

GetBlobLength(Int32)

Obtient le nombre d’octets contenus dans une colonne BLOB (binaire grand objet PipelineBuffer ).

GetBoolean(Int32)

Ça enregistre la valeur bool dans la PipelineBuffer colonne.

GetByte(Int32)

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

GetBytes(Int32)

Ça obtient le tableau d’octets stocké dans une colonne tampon.

GetColumnInfo(Int32)

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

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)

Ça fait stocker le double dans la PipelineBuffer colonne.

GetGuid(Int32)

Ça enregistre la valeur Guid dans la PipelineBuffer colonne.

GetInt16(Int32)

Ça fait enregistrer le court-circuit dans la PipelineBuffer colonne.

GetInt32(Int32)

Ça fait enregistrer l’intelligence dans une PipelineBuffer colonne.

GetInt64(Int32)

Ça range le long dans la PipelineBuffer colonne.

GetSByte(Int32)

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

GetSingle(Int32)

Ça fait stocker le flotteur dans une PipelineBuffer colonne.

GetString(Int32)

Ça fait stocker la chaîne dans la colonne tampon.

GetTime(Int32)

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

GetUInt16(Int32)

Ça obtient la valeur ushort stockée dans la colonne tampon.

GetUInt32(Int32)

Ça enregistre la valeur UInt32 dans la colonne tampon.

GetUInt64(Int32)

Ça fait enregistrer la valeur ulong dans la colonne tampon.

IsNull(Int32)

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

NextRow()

Avance à PipelineBuffer la rangée suivante.

RemoveRow()

Supprime la ligne courante de la PipelineBufferligne .

ResetBlobData(Int32)

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

SetBoolean(Int32, Boolean)

Attribue une valeur bool à une PipelineBuffer colonne.

SetByte(Int32, Byte)

Attribue un octet à une PipelineBuffer colonne.

SetBytes(Int32, Byte[])

Attribue un tableau d’octets à une colonne tampon.

SetDate(Int32, DateTime)

Attribue une valeur DateHeure à la PipelineBuffer colonne.

SetDateTime(Int32, DateTime)

Attribue une valeur DateHeure à la PipelineBuffer colonne.

SetDateTimeOffset(Int32, DateTimeOffset)

Attribue une valeur DateTimeOffset à la PipelineBuffer colonne.

SetDecimal(Int32, Decimal)

Attribue une décimale à une colonne tampon.

SetDouble(Int32, Double)

Attribue un double à une PipelineBuffer colonne.

SetEndOfRowset()

Avertit le PipelineBuffer qu’un composant a fini d’ajouter des lignes au tampon.

SetErrorInfo(Int32, Int32, Int32)

Définit les informations d’erreur pour la ligne courante PipelineBuffer .

SetGuid(Int32, Guid)

Attribue un Guid à une colonne tampon.

SetInt16(Int32, Int16)

Attribue un entier signé de 16 bits à une colonne tampon.

SetInt32(Int32, Int32)

Attribue un entier signé de 32 bits à une colonne tampon.

SetInt64(Int32, Int64)

Attribue un entier signé de 64 bits à une colonne tampon.

SetNull(Int32)

Attribue null à une colonne tampon.

SetSByte(Int32, SByte)

Attribue un entier signé de 8 bits à une colonne tampon.

SetSingle(Int32, Single)

Attribue un float à une colonne tampon.

SetString(Int32, String)

Attribue une chaîne à une colonne tampon.

SetTime(Int32, TimeSpan)

Attribue une valeur TimeSpan à la PipelineBuffer colonne.

SetUInt16(Int32, UInt16)

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

SetUInt32(Int32, UInt32)

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

SetUInt64(Int32, UInt64)

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

S’applique à