Condividi tramite


PipelineBuffer Classe

Definizione

Fornisce un archivio dati in memoria che contiene 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

Nell'esempio seguente viene illustrato un componente di trasformazione che esegue l'iterazione delle righe e delle colonne di un PipelineBuffer oggetto 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.  
         }  
      }  
      }  
   }  
}  

Nell'esempio seguente viene illustrato un componente di origine che aggiunge righe al buffer di output 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

PipelineBuffer è un archivio dati bidimensionale in memoria contenente righe e colonne. Viene creato dall'attività flusso di dati e fornito ai componenti del flusso di dati gestiti durante l'esecuzione. Le colonne contenute in un buffer sono basate sulle colonne nelle IDTSOutputColumnCollection100 raccolte dei componenti del grafico.

I componenti di origine e i componenti con output asincroni ricevono un buffer per ognuno degli oggetti di output connessi a un componente downstream. Questi buffer vengono definiti buffer di output e non contengono righe. Il componente che riceve il buffer di output aggiunge righe al buffer e chiama il SetEndOfRowset metodo al termine. Questo metodo imposta il valore della EndOfRowset proprietà su true sul buffer finale. L'attività Flusso di dati fornisce quindi tale buffer al componente successivo nel grafico.

I componenti di trasformazione con output sincroni e componenti di destinazione ricevono PipelineBuffer oggetti nel ProcessInput metodo . L'oggetto PipelineBuffer ricevuto in questo metodo è un Input buffer e contiene le righe aggiunte ai componenti upstream. Questo buffer è limitato e non può essere usato per aggiungere o rimuovere righe dal buffer.

PipelineBuffer è scritto nel codice gestito e supporta gli sviluppatori di componenti flusso di dati gestiti eseguendo il marshalling dei dati tra il codice gestito e l'oggetto COM sottostanteIDTSBuffer100.

Per un elenco completo dei tipi di dati di Integration Services e dei metodi e Set corrispondenti Get della PipelineBuffer classe da usare con ogni tipo di dati, vedere Utilizzo dei tipi di dati nella Flusso di dati.

Costruttori

PipelineBuffer(IntPtr, PipelineBufferMode)

Crea una nuova istanza dell'oggetto PipelineBuffer.

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

Inizializza una nuova istanza della classe PipelineBuffer.

Proprietà

ColumnCount

Ottiene il numero di colonne nell'oggetto PipelineBuffer.

ColumnInfo

Ottiene metadati di sola lettura relativi alla colonna.

CurrentRow

Ottiene l'indice della riga corrente nell'oggetto PipelineBuffer.

EndOfRowset

Ottiene un valore che indica se l'oggetto PipelineBuffer corrente è il buffer finale.

Item[Int32]

Valore della colonna specificata nella riga corrente

Mode

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

RowCount

Ottiene il numero di righe nell'oggetto PipelineBuffer.

RowSize

Ottiene le dimensioni della riga nell'oggetto PipelineBuffer.

RowStarts

Ottiene il punto iniziale della riga.

Metodi

AddBlobData(Int32, Byte[])

Aggiunge una matrice di byte a una colonna PipelineBuffer.

AddBlobData(Int32, Byte[], Int32)

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

AddRow()

Aggiunge una riga all'oggetto PipelineBuffer.

DirectErrorRow(Int32, Int32, Int32)

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

DirectErrorRow(Int32, Int32, Int32, Int32)

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

DirectRow(Int32)

Invia una riga da un oggetto PipelineBuffer all'oggetto IDTSOutput100 specificato.

Dispose()

Rilascia tutte le risorse usate da PipelineBuffer.

Dispose(Boolean)

Rilascia le risorse non gestite utilizzate dall'oggetto PipelineBuffer e, facoltativamente, le risorse gestite.

Finalize()

Rilascia tutte le risorse usate da PipelineBuffer.

GetBlobData(Int32, Int32, Int32)

Recupera una matrice di byte da un BLOB (Binary Large Object) archiviato in una colonna PipelineBuffer.

GetBlobLength(Int32)

Ottiene il numero di byte contenuto in una colonna PipelineBuffer BLOB (Binary Large Object).

GetBoolean(Int32)

Ottiene il valore bool archiviato nella PipelineBuffer colonna.

GetByte(Int32)

Ottiene il valore di byte archiviato nella PipelineBuffer colonna.

GetBytes(Int32)

Ottiene la matrice di byte archiviata in una colonna del buffer.

GetColumnInfo(Int32)

Recupera la struttura BufferColumn per una colonna PipelineBuffer.

GetDate(Int32)

Ottiene il valore DateTime archiviato nella PipelineBuffer colonna .

GetDateTime(Int32)

Ottiene il valore DateTime archiviato nella PipelineBuffer colonna .

GetDateTimeOffset(Int32)

Ottiene il valore DateTimeOffset archiviato nella PipelineBuffer colonna.

GetDecimal(Int32)

Ottiene il valore decimale archiviato nella PipelineBuffer colonna.

GetDouble(Int32)

Ottiene il doppio archiviato nella PipelineBuffer colonna .

GetGuid(Int32)

Ottiene il valore Guid archiviato nella PipelineBuffer colonna.

GetInt16(Int32)

Ottiene l'oggetto short archiviato nella PipelineBuffer colonna .

GetInt32(Int32)

Ottiene l'oggetto int archiviato in una PipelineBuffer colonna.

GetInt64(Int32)

Ottiene l'oggetto long archiviato nella PipelineBuffer colonna .

GetSByte(Int32)

Ottiene il valore SByte archiviato in una PipelineBuffer colonna.

GetSingle(Int32)

Ottiene il valore float archiviato in una colonna PipelineBuffer.

GetString(Int32)

Ottiene la stringa archiviata nella colonna del buffer.

GetTime(Int32)

Ottiene il valore TimeSpan archiviato nella PipelineBuffer colonna .

GetUInt16(Int32)

Ottiene il valore ushort archiviato nella colonna buffer.

GetUInt32(Int32)

Ottiene il valore UInt32 archiviato nella colonna del buffer.

GetUInt64(Int32)

Ottiene il valore di ulong archiviato nella colonna del buffer.

IsNull(Int32)

Verifica se i dati in una colonna del buffer sono Null.

NextRow()

Sposta l'oggetto PipelineBuffer alla riga successiva.

RemoveRow()

Rimuove la riga corrente dall'oggetto 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 una matrice di byte a una colonna del 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 del buffer.

SetDouble(Int32, Double)

Assegna un valore double a una PipelineBuffer colonna.

SetEndOfRowset()

Notifica l'oggetto PipelineBuffer che un componente ha completato l'aggiunta di righe al buffer.

SetErrorInfo(Int32, Int32, Int32)

Imposta le informazioni sull'errore per la riga PipelineBuffer corrente.

SetGuid(Int32, Guid)

Assegna un GUID a una colonna del buffer.

SetInt16(Int32, Int16)

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

SetInt32(Int32, Int32)

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

SetInt64(Int32, Int64)

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

SetNull(Int32)

Assegna Null a una colonna del buffer.

SetSByte(Int32, SByte)

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

SetSingle(Int32, Single)

Assegna un valore float a una colonna del buffer.

SetString(Int32, String)

Assegna una stringa a una colonna del 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 del buffer.

SetUInt32(Int32, UInt32)

Assegna un intero senza segno a 32 bit a una colonna del buffer.

SetUInt64(Int32, UInt64)

Assegna un intero senza segno a 64 bit a una colonna del buffer.

Si applica a