PipelineBuffer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |