PipelineBuffer Classe

Definizione

Fornisce uno store dati in memoria contenente righe e colonne di dati.

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
Ereditarietà
PipelineBuffer
Implementazioni

Esempio

L'esempio seguente mostra una componente di trasformazione che itera le righe e le colonne di 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'esempio seguente mostra un componente sorgente che aggiunge righe al buffer di uscita 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();  
      }  
   }  
}  

Commenti

Il PipelineBuffer è un archivio dati bidimensionale in memoria contenente righe e colonne. Viene creato dal compito di flusso dati e fornito ai componenti del flusso dati gestiti durante l'esecuzione. Le colonne contenute in un buffer si basano sulle colonne nelle IDTSOutputColumnCollection100 collezioni dei componenti nel grafo.

I componenti sorgente e quelli con uscite asincrone ricevono un buffer per ciascun degli oggetti di uscita collegati a un componente downstream. Questi buffer sono chiamati buffer di uscita e non contengono righe. Il componente che riceve il buffer di output aggiunge righe al buffer e chiama il SetEndOfRowset metodo una volta terminato. Questo metodo stabilisce il valore della EndOfRowset proprietà a true sul buffer finale. Il compito di flusso dati fornisce quindi quel buffer al componente successivo del grafo.

I componenti di trasformazione con output sincroni e componenti di destinazione ricevono PipelineBuffer oggetti nel ProcessInput metodo. Il PipelineBuffer ricevito in questo metodo è un Input buffer e contiene le righe aggiunte dai componenti a monte. Questo buffer è limitato e non può essere usato per aggiungere o rimuovere righe dal buffer.

È PipelineBuffer scritto in codice gestito e supporta gli sviluppatori di componenti del flusso dati gestito coordinando i dati tra il codice gestito e l'oggetto COM sottostante IDTSBuffer100 .

Per un elenco completo dei tipi di dati di Integration Services e i relativi metodi e metodi della PipelineBuffer classe da utilizzare con ciascun tipo di dato, vedi Lavorare con i tipi di dati nel Flusso di dati.SetGet

Costruttori

Nome Descrizione
PipelineBuffer(IntPtr, PipelineBufferMode)

Istanzia una nuova istanza del PipelineBuffer.

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

Inizializza una nuova istanza della classe PipelineBuffer.

Proprietà

Nome Descrizione
ColumnCount

Ottiene il numero di colonne nel PipelineBuffer.

ColumnInfo

Riceve i metadati di sola lettura sulla colonna.

CurrentRow

Ottiene l'indice della riga corrente nel PipelineBuffer.

EndOfRowset

Ottiene un valore che indica se la corrente PipelineBuffer è il buffer finale.

Item[Int32]

Valore della colonna specificata nella riga corrente

Mode

Ottiene un valore che indica se a PipelineBuffer è un IDTSInput100 buffer o un IDTSOutput100 buffer.

RowCount

Ottiene il numero di righe nell'oggetto PipelineBuffer .

RowSize

Ottiene la dimensione della riga nell'oggetto PipelineBuffer .

RowStarts

Ottiene il punto di partenza della fila.

Metodi

Nome Descrizione
AddBlobData(Int32, Byte[], Int32)

Aggiunge un array di un numero specificato di byte a una PipelineBuffer colonna.

AddBlobData(Int32, Byte[])

Aggiunge un array di byte a una PipelineBuffer colonna.

AddRow()

Aggiunge una riga all'oggetto PipelineBuffer .

DirectErrorRow(Int32, Int32, Int32, Int32)

Invia una PipelineBuffer riga a un IDTSOutput100 la cui IsErrorOut proprietà è vera.

DirectErrorRow(Int32, Int32, Int32)

Invia una PipelineBuffer riga a un IDTSOutput100 la cui IsErrorOut proprietà è vera.

DirectRow(Int32)

Invia una riga da a PipelineBuffer a al specificato IDTSOutput100.

Dispose()

Rilascia tutte le risorse usate dal PipelineBuffer.

Dispose(Boolean)

Rilascia le risorse non gestite utilizzate dal PipelineBuffer, e opzionalmente rilascia le risorse gestite.

Finalize()

Rilascia tutte le risorse usate dal PipelineBuffer.

GetBlobData(Int32, Int32, Int32)

Recupera un array di byte da un oggetto binario grande (BLOB) memorizzato in una PipelineBuffer colonna.

GetBlobLength(Int32)

Ottiene il numero di byte contenuti in una colonna binaria di grande oggetto (BLOB PipelineBuffer ).

GetBoolean(Int32)

Ottiene il valore bool memorizzato nella PipelineBuffer colonna.

GetByte(Int32)

Ottiene il valore del byte memorizzato nella PipelineBuffer colonna.

GetBytes(Int32)

Ottiene l'array di byte memorizzati in una colonna buffer.

GetColumnInfo(Int32)

Recupera la BufferColumn struttura di una PipelineBuffer colonna.

GetDate(Int32)

Ottiene il valore DateTime memorizzato nella PipelineBuffer colonna.

GetDateTime(Int32)

Ottiene il valore DateTime memorizzato nella PipelineBuffer colonna.

GetDateTimeOffset(Int32)

Ottiene il valore DateTimeOffset memorizzato nella PipelineBuffer colonna.

GetDecimal(Int32)

Ottiene il valore decimale memorizzato nella PipelineBuffer colonna.

GetDouble(Int32)

Così il doppio viene memorizzato nella PipelineBuffer colonna.

GetGuid(Int32)

Ottiene il valore Guid memorizzato nella PipelineBuffer colonna.

GetInt16(Int32)

Così il cortocircuito viene archiviato nella PipelineBuffer colonna.

GetInt32(Int32)

Ottiene l'intelligenza memorizzata in una PipelineBuffer colonna.

GetInt64(Int32)

Mette il lungo nella PipelineBuffer colonna.

GetSByte(Int32)

Ottiene il valore SByte memorizzato in una PipelineBuffer colonna.

GetSingle(Int32)

Così il galleggiante viene memorizzato in una PipelineBuffer colonna.

GetString(Int32)

Così la stringa viene memorizzata nella colonna buffer.

GetTime(Int32)

Ottiene il valore TimeSpan memorizzato nella PipelineBuffer colonna.

GetUInt16(Int32)

Ottiene il valore ushort memorizzato nella colonna del buffer.

GetUInt32(Int32)

Ottiene il valore UInt32 memorizzato nella colonna del buffer.

GetUInt64(Int32)

Ottiene il valore ulong memorizzato nella colonna del buffer.

IsNull(Int32)

Controlla se i dati in una colonna del buffer sono nulli.

NextRow()

Avanza alla PipelineBuffer fila successiva.

RemoveRow()

Rimuove la riga corrente dal PipelineBuffer.

ResetBlobData(Int32)

Elimina il contenuto della colonna BLOB specificata.

SetBoolean(Int32, Boolean)

Assegna un valore bool a una PipelineBuffer colonna.

SetByte(Int32, Byte)

Assegna un byte a una PipelineBuffer colonna.

SetBytes(Int32, Byte[])

Assegna un array di byte a una colonna buffer.

SetDate(Int32, DateTime)

Assegna un valore DateTime alla PipelineBuffer colonna.

SetDateTime(Int32, DateTime)

Assegna un valore DateTime alla PipelineBuffer colonna.

SetDateTimeOffset(Int32, DateTimeOffset)

Assegna un valore DateTimeOffset alla PipelineBuffer colonna.

SetDecimal(Int32, Decimal)

Assegna un decimale a una colonna buffer.

SetDouble(Int32, Double)

Assegna un doppio a una PipelineBuffer colonna.

SetEndOfRowset()

Notifica che PipelineBuffer un componente ha finito di aggiungere righe al buffer.

SetErrorInfo(Int32, Int32, Int32)

Imposta le informazioni di errore per la riga corrente PipelineBuffer .

SetGuid(Int32, Guid)

Assegna un Guid a una colonna buffer.

SetInt16(Int32, Int16)

Assegna un intero con segno a 16 bit a una colonna buffer.

SetInt32(Int32, Int32)

Assegna un intero con segno a 32 bit a una colonna buffer.

SetInt64(Int32, Int64)

Assegna un intero con segno a 64 bit a una colonna buffer.

SetNull(Int32)

Assegna null a una colonna buffer.

SetSByte(Int32, SByte)

Assegna un intero con segno a 8 bit a una colonna buffer.

SetSingle(Int32, Single)

Assegna un float a una colonna buffer.

SetString(Int32, String)

Assegna una stringa a una colonna buffer.

SetTime(Int32, TimeSpan)

Assegna un valore TimeSpan alla PipelineBuffer colonna.

SetUInt16(Int32, UInt16)

Assegna un intero senza segno a 16 bit a una colonna buffer.

SetUInt32(Int32, UInt32)

Assegna un intero non firmato a 32 bit a una colonna buffer.

SetUInt64(Int32, UInt64)

Assegna un intero non firmato a 64 bit a una colonna buffer.

Si applica a