Compartilhar via


PipelineBuffer Classe

Definição

Fornece um repositório de dados na memória que contém linhas e colunas de dados.

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
Herança
PipelineBuffer
Implementações

Exemplos

O exemplo a seguir mostra um componente de transformação que itera as linhas e colunas de um 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.  
         }  
      }  
      }  
   }  
}  

O exemplo a seguir mostra um componente de origem que adiciona linhas ao buffer de saída em 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();  
      }  
   }  
}  

Comentários

Trata-se PipelineBuffer de um armazenamento de dados bidimensional na memória que contém linhas e colunas. Ele é criado pela tarefa de fluxo de dados e fornecido para componentes de fluxo de dados gerenciados durante a execução. As colunas contidas em um buffer são baseadas nas colunas nas IDTSOutputColumnCollection100 coleções dos componentes no grafo.

Componentes e componentes de origem com saídas assíncronas recebem um buffer para cada um dos objetos de saída conectados a um componente downstream. Esses buffers são chamados de buffers de saída e não contêm linhas. O componente que recebe o buffer de saída adiciona linhas ao buffer e chama o SetEndOfRowset método quando concluído. Esse método define o valor da EndOfRowset propriedade como true no buffer final. Em seguida, a tarefa de fluxo de dados fornece esse buffer para o próximo componente no grafo.

Componentes de transformação com saídas síncronas e componentes de destino recebem PipelineBuffer objetos no ProcessInput método. O PipelineBuffer recebido neste método é um Input buffer e contém as linhas que foram adicionadas por componentes upstream. Esse buffer é restrito e não pode ser usado para adicionar ou remover linhas do buffer.

Ele PipelineBuffer é escrito em código gerenciado e dá suporte a desenvolvedores de componentes de fluxo de dados gerenciados por meio do marshalling de dados entre o código gerenciado e o objeto COM subjacente IDTSBuffer100 .

Para obter uma lista completa de tipos de dados do Integration Services e os métodos e Set correspondentes Get da classe a PipelineBuffer serem usados com cada tipo de dados, consulte Trabalhando com tipos de dados no Fluxo de Dados.

Construtores

PipelineBuffer(IntPtr, PipelineBufferMode)

Cria uma nova instância do PipelineBuffer.

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

Inicializa uma nova instância da classe PipelineBuffer.

Propriedades

ColumnCount

Obtém o número de colunas no PipelineBuffer.

ColumnInfo

Obtém metadados somente leitura sobre a coluna.

CurrentRow

Obtém o índice da linha atual no PipelineBuffer.

EndOfRowset

Obtém um valor que indica se o PipelineBuffer atual é o buffer final.

Item[Int32]

Valor da coluna especificada na linha atual

Mode

Obtém um valor que indica se um PipelineBuffer é um buffer de IDTSInput100 ou um buffer de IDTSOutput100.

RowCount

Obtém o número de linhas no objeto PipelineBuffer.

RowSize

Obtém o tamanho da linha no objeto PipelineBuffer.

RowStarts

Obtém o ponto de partida da linha.

Métodos

AddBlobData(Int32, Byte[])

Adiciona uma matriz de bytes a uma coluna PipelineBuffer.

AddBlobData(Int32, Byte[], Int32)

Adiciona uma matriz de um número de bytes especificado a uma coluna PipelineBuffer.

AddRow()

Adiciona uma linha ao objeto PipelineBuffer.

DirectErrorRow(Int32, Int32, Int32)

Envia uma PipelineBuffer linha para uma IDTSOutput100 propriedade cuja IsErrorOut propriedade é verdadeira.

DirectErrorRow(Int32, Int32, Int32, Int32)

Envia uma PipelineBuffer linha para uma IDTSOutput100 propriedade cuja IsErrorOut propriedade é verdadeira.

DirectRow(Int32)

Envia uma linha de um PipelineBuffer para o IDTSOutput100especificado.

Dispose()

Libera todos os recursos usados pelo PipelineBuffer.

Dispose(Boolean)

Libera os recursos não gerenciados usados pelo PipelineBuffer e, opcionalmente, libera os recursos gerenciados.

Finalize()

Libera todos os recursos usados pelo PipelineBuffer.

GetBlobData(Int32, Int32, Int32)

Recupera uma matriz de bytes de um BLOB (objeto binário grande) armazenado em uma coluna PipelineBuffer.

GetBlobLength(Int32)

Obtém o número de bytes contidos em uma PipelineBuffer coluna BLOB (objeto binário grande).

GetBoolean(Int32)

Obtém o valor bool armazenado na PipelineBuffer coluna.

GetByte(Int32)

Obtém o valor de bytes armazenado na PipelineBuffer coluna.

GetBytes(Int32)

Obtém a matriz de bytes armazenados em uma coluna de buffer.

GetColumnInfo(Int32)

Recupera a estrutura de BufferColumn para uma coluna PipelineBuffer.

GetDate(Int32)

Obtém o valor DateTime armazenado na PipelineBuffer coluna.

GetDateTime(Int32)

Obtém o valor DateTime armazenado na PipelineBuffer coluna.

GetDateTimeOffset(Int32)

Obtém o valor DateTimeOffset armazenado na PipelineBuffer coluna.

GetDecimal(Int32)

Obtém o valor decimal armazenado na PipelineBuffer coluna.

GetDouble(Int32)

Obtém o duplo armazenado na PipelineBuffer coluna.

GetGuid(Int32)

Obtém o valor guid armazenado na PipelineBuffer coluna.

GetInt16(Int32)

Obtém o curto armazenado na PipelineBuffer coluna.

GetInt32(Int32)

Obtém o int armazenado em uma PipelineBuffer coluna.

GetInt64(Int32)

Obtém o longo armazenado na PipelineBuffer coluna.

GetSByte(Int32)

Obtém o valor SByte armazenado em uma PipelineBuffer coluna.

GetSingle(Int32)

Obtém o valor float armazenado em uma coluna PipelineBuffer.

GetString(Int32)

Obtém a cadeia de caracteres armazenada na coluna de buffer.

GetTime(Int32)

Obtém o valor timeSpan armazenado na PipelineBuffer coluna.

GetUInt16(Int32)

Obtém o valor ushort armazenado na coluna de buffer.

GetUInt32(Int32)

Obtém o valor UInt32 armazenado na coluna de buffer.

GetUInt64(Int32)

Obtém o valor ulong armazenado na coluna de buffer.

IsNull(Int32)

Verifica se os dados em uma coluna de buffer são nulos.

NextRow()

Avança o PipelineBuffer para a próxima linha.

RemoveRow()

Remove a linha atual do PipelineBuffer.

ResetBlobData(Int32)

Exclui o conteúdo da coluna de BLOB especificada.

SetBoolean(Int32, Boolean)

Atribui um valor bool a uma PipelineBuffer coluna.

SetByte(Int32, Byte)

Atribui um byte a uma PipelineBuffer coluna.

SetBytes(Int32, Byte[])

Atribui uma matriz de bytes a uma coluna de buffer.

SetDate(Int32, DateTime)

Atribui um valor DateTime à PipelineBuffer coluna.

SetDateTime(Int32, DateTime)

Atribui um valor DateTime à PipelineBuffer coluna.

SetDateTimeOffset(Int32, DateTimeOffset)

Atribui um valor DateTimeOffset à PipelineBuffer coluna.

SetDecimal(Int32, Decimal)

Atribui um decimal a uma coluna de buffer.

SetDouble(Int32, Double)

Atribui um duplo a uma PipelineBuffer coluna.

SetEndOfRowset()

Notifica o PipelineBuffer de que um componente concluiu a adição de linhas ao buffer.

SetErrorInfo(Int32, Int32, Int32)

Define as informações sobre o erro da linha PipelineBuffer atual.

SetGuid(Int32, Guid)

Atribui um Guid a uma coluna de buffer.

SetInt16(Int32, Int16)

Atribui um inteiro com sinal de 16 bits a uma coluna de buffer.

SetInt32(Int32, Int32)

Atribui um inteiro com sinal de 32 bits a uma coluna de buffer.

SetInt64(Int32, Int64)

Atribui um inteiro com sinal de 64 bits a uma coluna de buffer.

SetNull(Int32)

Atribui nulo a uma coluna de buffer.

SetSByte(Int32, SByte)

Atribui um inteiro de 8 bits assinado a uma coluna de buffer.

SetSingle(Int32, Single)

Atribui um valor float a uma coluna de buffer.

SetString(Int32, String)

Atribui uma cadeia de caracteres a uma coluna de buffer.

SetTime(Int32, TimeSpan)

Atribui um valor TimeSpan à PipelineBuffer coluna.

SetUInt16(Int32, UInt16)

Atribui um inteiro não assinado de 16 bits a uma coluna de buffer.

SetUInt32(Int32, UInt32)

Atribui um inteiro de 32 bits sem sinal a uma coluna de buffer.

SetUInt64(Int32, UInt64)

Atribui um inteiro sem sinal de 64 bits a uma coluna de buffer.

Aplica-se a