PipelineBuffer Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona un almacén de datos en memoria que contiene filas y columnas de datos.
public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
- Herencia
-
PipelineBuffer
- Implementaciones
Ejemplos
En el ejemplo siguiente se muestra un componente de transformación que recorre en iteración las filas y columnas de en PipelineBufferProcessInput.
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.
}
}
}
}
}
En el ejemplo siguiente se muestra un componente de origen que agrega filas al búfer de salida en 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();
}
}
}
Comentarios
PipelineBuffer es un almacén de datos bidimensional en memoria que contiene filas y columnas. Se crea mediante la tarea de flujo de datos y se proporciona a los componentes de flujo de datos administrados durante la ejecución. Las columnas contenidas en un búfer se basan en las columnas de las IDTSOutputColumnCollection100 colecciones de los componentes del gráfico.
Los componentes y componentes de origen con salidas asincrónicas reciben un búfer para cada uno de los objetos de salida que están conectados a un componente de bajada. Estos búferes se conocen como búferes de salida y no contienen filas. El componente que recibe el búfer de salida agrega filas al búfer y llama al SetEndOfRowset método cuando termine. Este método establece el valor de la EndOfRowset propiedad true
en en el búfer final. A continuación, la tarea flujo de datos proporciona ese búfer al siguiente componente del grafo.
Los componentes de transformación con salidas sincrónicas y componentes de destino reciben PipelineBuffer objetos en el ProcessInput método . El PipelineBuffer objeto recibido en este método es un Input búfer y contiene las filas que se agregaron a los componentes ascendentes. Este búfer está restringido y no se puede usar para agregar o quitar filas del búfer.
PipelineBuffer se escribe en código administrado y admite desarrolladores de componentes de flujo de datos administrados mediante la serialización de datos entre código administrado y el objeto COM subyacenteIDTSBuffer100.
Para obtener una lista completa de los tipos de datos de Integration Services y los métodos y Set
correspondientes Get
de la PipelineBuffer clase que se van a usar con cada tipo de datos, vea Trabajar con tipos de datos en el Data Flow.
Constructores
PipelineBuffer(IntPtr, PipelineBufferMode) |
Crea una nueva instancia de la clase PipelineBuffer. |
PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean) |
Inicializa una nueva instancia de la clase PipelineBuffer. |
Propiedades
ColumnCount |
Obtiene el número de columnas del PipelineBuffer. |
ColumnInfo |
Obtiene metadatos de solo lectura sobre la columna. |
CurrentRow |
Obtiene el índice de la fila actual de PipelineBuffer. |
EndOfRowset |
Obtiene un valor que indica si el PipelineBuffer actual es el último búfer. |
Item[Int32] |
Valor de la columna especificada en la fila actual |
Mode |
Obtiene un valor que indica si una clase PipelineBuffer es un búfer de IDTSInput100 o un búfer de IDTSOutput100. |
RowCount |
Obtiene el número de filas del objeto PipelineBuffer. |
RowSize |
Obtiene el tamaño de fila del objeto PipelineBuffer. |
RowStarts |
Obtiene el punto de inicio de la fila. |
Métodos
AddBlobData(Int32, Byte[]) |
Agrega una matriz de bytes a una columna de PipelineBuffer. |
AddBlobData(Int32, Byte[], Int32) |
Agrega una matriz de un número especificado de bytes a una columna de PipelineBuffer. |
AddRow() |
Agrega una fila al objeto PipelineBuffer. |
DirectErrorRow(Int32, Int32, Int32) |
Envía una PipelineBuffer fila a una IDTSOutput100 cuya IsErrorOut propiedad es true. |
DirectErrorRow(Int32, Int32, Int32, Int32) |
Envía una PipelineBuffer fila a una IDTSOutput100 cuya IsErrorOut propiedad es true. |
DirectRow(Int32) |
Envía una fila de PipelineBuffer a la interfaz IDTSOutput100 especificada. |
Dispose() |
Libera todos los recursos que usa PipelineBuffer. |
Dispose(Boolean) |
Libera los recursos no administrados utilizados por PipelineBuffer y, opcionalmente, libera también los recursos administrados. |
Finalize() |
Libera todos los recursos que usa PipelineBuffer. |
GetBlobData(Int32, Int32, Int32) |
Recupera una matriz de bytes de un objeto binario grande (BLOB) almacenado en una columna de PipelineBuffer. |
GetBlobLength(Int32) |
Obtiene el número de bytes contenidos en un objeto binario grande (BLOB) almacenado en una columna de PipelineBuffer. |
GetBoolean(Int32) |
Obtiene el valor bool almacenado en la PipelineBuffer columna. |
GetByte(Int32) |
Obtiene el valor de byte almacenado en la PipelineBuffer columna. |
GetBytes(Int32) |
Obtiene la matriz de bytes almacenados en una columna de búfer. |
GetColumnInfo(Int32) |
Recupera la estructura BufferColumn para una columna de PipelineBuffer. |
GetDate(Int32) |
Obtiene el valor DateTime almacenado en la PipelineBuffer columna. |
GetDateTime(Int32) |
Obtiene el valor DateTime almacenado en la PipelineBuffer columna. |
GetDateTimeOffset(Int32) |
Obtiene el valor DateTimeOffset almacenado en la PipelineBuffer columna . |
GetDecimal(Int32) |
Obtiene el valor decimal almacenado en la PipelineBuffer columna. |
GetDouble(Int32) |
Obtiene el doble almacenado en la PipelineBuffer columna. |
GetGuid(Int32) |
Obtiene el valor guid almacenado en la PipelineBuffer columna. |
GetInt16(Int32) |
Obtiene el short almacenado en la PipelineBuffer columna. |
GetInt32(Int32) |
Obtiene el valor int almacenado en una PipelineBuffer columna. |
GetInt64(Int32) |
Obtiene el valor long almacenado en la PipelineBuffer columna. |
GetSByte(Int32) |
Obtiene el valor SByte almacenado en una PipelineBuffer columna. |
GetSingle(Int32) |
Obtiene el valor de tipo flotante almacenado en una columna de PipelineBuffer. |
GetString(Int32) |
Obtiene la cadena almacenada en la columna de búfer. |
GetTime(Int32) |
Obtiene el valor TimeSpan almacenado en la PipelineBuffer columna . |
GetUInt16(Int32) |
Obtiene el valor de ushort almacenado en la columna de búfer. |
GetUInt32(Int32) |
Obtiene el valor UInt32 almacenado en la columna de búfer. |
GetUInt64(Int32) |
Obtiene el valor de ulong almacenado en la columna de búfer. |
IsNull(Int32) |
Comprueba si los datos de una columna de búfer son nulos. |
NextRow() |
Hace avanzar PipelineBuffer hasta la siguiente fila. |
RemoveRow() |
Quita la fila actual del PipelineBuffer. |
ResetBlobData(Int32) |
Elimina el contenido de la columna de BLOB especificada. |
SetBoolean(Int32, Boolean) |
Asigna un valor bool a una PipelineBuffer columna. |
SetByte(Int32, Byte) |
Asigna un byte a una PipelineBuffer columna. |
SetBytes(Int32, Byte[]) |
Asigna una matriz de bytes a una columna de búfer. |
SetDate(Int32, DateTime) |
Asigna un valor DateTime a la PipelineBuffer columna. |
SetDateTime(Int32, DateTime) |
Asigna un valor DateTime a la PipelineBuffer columna. |
SetDateTimeOffset(Int32, DateTimeOffset) |
Asigna un valor DateTimeOffset a la PipelineBuffer columna. |
SetDecimal(Int32, Decimal) |
Asigna un decimal a una columna de búfer. |
SetDouble(Int32, Double) |
Asigna un valor double a una PipelineBuffer columna. |
SetEndOfRowset() |
Notifica al PipelineBuffer que un componente ha terminado de agregar filas al búfer. |
SetErrorInfo(Int32, Int32, Int32) |
Establece la información de error para la fila del PipelineBuffer actual. |
SetGuid(Int32, Guid) |
Asigna un Guid a una columna de búfer. |
SetInt16(Int32, Int16) |
Asigna un entero de 16 bits con signo a una columna de búfer. |
SetInt32(Int32, Int32) |
Asigna un entero de 32 bits con signo a una columna de búfer. |
SetInt64(Int32, Int64) |
Asigna un valor entero de 64 bits con signo a una columna de búfer. |
SetNull(Int32) |
Asigna null a una columna de búfer. |
SetSByte(Int32, SByte) |
Asigna un entero de 8 bits con signo a una columna de búfer. |
SetSingle(Int32, Single) |
Asigna un valor flotante a una columna de búfer. |
SetString(Int32, String) |
Asigna una cadena a una columna de búfer. |
SetTime(Int32, TimeSpan) |
Asigna un valor TimeSpan a la PipelineBuffer columna. |
SetUInt16(Int32, UInt16) |
Asigna un entero de 16 bits sin signo a una columna de búfer. |
SetUInt32(Int32, UInt32) |
Asigna un entero de 32 bits sin signo a una columna de búfer. |
SetUInt64(Int32, UInt64) |
Asigna un entero de 64 bits sin signo a una columna de búfer. |