PipelineBuffer 类

定义

提供包含数据行和数据列的内存中数据存储区。

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
继承
PipelineBuffer
实现

示例

下面的示例演示循环访问 in ProcessInput中的行和列的PipelineBuffer转换组件。

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.  
         }  
      }  
      }  
   }  
}  

以下示例显示了向输出缓冲区 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();  
      }  
   }  
}  

注解

PipelineBuffer这是包含行和列的内存中二维数据存储。 它由数据流任务创建,并在执行期间提供给托管数据流组件。 缓冲区中包含的列基于图形中 IDTSOutputColumnCollection100 组件集合中的列。

具有异步输出的源组件和组件接收连接到下游组件的每个输出对象的缓冲区。 这些缓冲区称为输出缓冲区,不包含行。 接收输出缓冲区的组件将行添加到缓冲区,并在完成后调用 SetEndOfRowset 该方法。 此方法将属性的值 EndOfRowset 设置为 true 在最终缓冲区上。 然后,数据流任务会将该缓冲区提供给图形中的下一个组件。

具有同步输出和目标组件的转换组件在方法中ProcessInput接收PipelineBuffer对象。 PipelineBuffer此方法中接收的缓冲区Input包含上游组件添加到的行。 此缓冲区受到限制,不能用于添加或删除缓冲区中的行。

PipelineBuffer 代码是用托管代码编写的,通过封送托管代码和基础 IDTSBuffer100 COM 对象之间的数据,支持托管数据流组件开发人员。

有关 Integration Services 数据类型的完整列表以及要与每种数据类型一起使用的类的PipelineBuffer相应GetSet方法,请参阅数据流中的数据类型。

构造函数

PipelineBuffer(IntPtr, PipelineBufferMode)

实例化 PipelineBuffer 的新实例。

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

初始化 PipelineBuffer 类的新实例。

属性

ColumnCount

获取 PipelineBuffer 的列数。

ColumnInfo

获取有关列的只读元数据。

CurrentRow

获取 PipelineBuffer 中当前行的索引。

EndOfRowset

获取一个值,该值指示当前 PipelineBuffer 是否为最终缓冲区。

Item[Int32]

当前行中指定列的值

Mode

获取一个值,该值指示 PipelineBufferIDTSInput100 缓冲区还是 IDTSOutput100 缓冲区。

RowCount

获取 PipelineBuffer 对象中的行数。

RowSize

获取 PipelineBuffer 对象中行的大小。

RowStarts

获取行的起点。

方法

AddBlobData(Int32, Byte[])

PipelineBuffer 列添加一个字节数组。

AddBlobData(Int32, Byte[], Int32)

PipelineBuffer 列中添加包含指定字节数的数组。

AddRow()

将行添加到 PipelineBuffer 对象。

DirectErrorRow(Int32, Int32, Int32)

将行 PipelineBuffer 发送到 IDTSOutput100IsErrorOut 属性为 true 的行。

DirectErrorRow(Int32, Int32, Int32, Int32)

将行 PipelineBuffer 发送到 IDTSOutput100IsErrorOut 属性为 true 的行。

DirectRow(Int32)

PipelineBuffer 中的一行发送到指定的 IDTSOutput100

Dispose()

释放由 PipelineBuffer 使用的所有资源。

Dispose(Boolean)

释放 PipelineBuffer 使用的非托管资源,并可以选择释放托管资源。

Finalize()

释放由 PipelineBuffer 使用的所有资源。

GetBlobData(Int32, Int32, Int32)

从存储在 PipelineBuffer 列中的二进制大型对象 (BLOB) 中检索一个字节数组。

GetBlobLength(Int32)

获取二进制大型对象 (BLOB) PipelineBuffer 列中所包含的字节数。

GetBoolean(Int32)

获取列中 PipelineBuffer 存储的布尔值。

GetByte(Int32)

获取存储在列中的 PipelineBuffer 字节值。

GetBytes(Int32)

获取存储在缓冲区列中的字节数组。

GetColumnInfo(Int32)

检索 BufferColumn 列的 PipelineBuffer 结构。

GetDate(Int32)

获取存储在列中的 PipelineBuffer DateTime 值。

GetDateTime(Int32)

获取存储在列中的 PipelineBuffer DateTime 值。

GetDateTimeOffset(Int32)

获取存储在列中的 PipelineBuffer DateTimeOffset 值。

GetDecimal(Int32)

获取存储在列中的 PipelineBuffer 十进制值。

GetDouble(Int32)

获取列中存储的 PipelineBuffer 双精度值。

GetGuid(Int32)

获取存储在列中的 PipelineBuffer Guid 值。

GetInt16(Int32)

获取列中存储的 PipelineBuffer 短值。

GetInt32(Int32)

获取存储在列中的 PipelineBuffer int。

GetInt64(Int32)

获取存储在列中的 PipelineBuffer 长。

GetSByte(Int32)

获取存储在 PipelineBuffer 列中的 SByte 值。

GetSingle(Int32)

获取存储在 PipelineBuffer 列中的 float 值。

GetString(Int32)

获取存储在缓冲区列中的字符串。

GetTime(Int32)

获取存储在列中的 PipelineBuffer TimeSpan 值。

GetUInt16(Int32)

获取存储在缓冲区列中的 ushort 值。

GetUInt32(Int32)

获取存储在缓冲区列中的 UInt32 值。

GetUInt64(Int32)

获取存储在缓冲区列中的 ulong 值。

IsNull(Int32)

检查以查看缓冲区列中的数据是否为 Null。

NextRow()

PipelineBuffer 前移到下一行。

RemoveRow()

PipelineBuffer 删除当前行。

ResetBlobData(Int32)

删除指定 BLOB 列的内容。

SetBoolean(Int32, Boolean)

向列分配布尔值 PipelineBuffer

SetByte(Int32, Byte)

向列分配字节 PipelineBuffer

SetBytes(Int32, Byte[])

将字节数组赋给缓冲区列。

SetDate(Int32, DateTime)

向列分配 DateTime 值 PipelineBuffer

SetDateTime(Int32, DateTime)

向列分配 DateTime 值 PipelineBuffer

SetDateTimeOffset(Int32, DateTimeOffset)

向列分配 DateTimeOffset 值 PipelineBuffer

SetDecimal(Int32, Decimal)

将十进制数分配给缓冲区列。

SetDouble(Int32, Double)

为列分配一个双精度 PipelineBuffer 值。

SetEndOfRowset()

PipelineBuffer 通知组件已完成向缓冲区添加行。

SetErrorInfo(Int32, Int32, Int32)

设置当前 PipelineBuffer 行的错误信息。

SetGuid(Int32, Guid)

将 Guid 分配给缓冲区列。

SetInt16(Int32, Int16)

将 16 位有符号整数赋给缓冲区列。

SetInt32(Int32, Int32)

将 32 位有符号整数分配给缓冲区列。

SetInt64(Int32, Int64)

将 64 位有符号整数分配给缓冲区列。

SetNull(Int32)

将 null 分配给缓冲区列。

SetSByte(Int32, SByte)

将 8 位有符号整数赋给缓冲区列。

SetSingle(Int32, Single)

将浮点数赋给缓冲区列。

SetString(Int32, String)

将字符串赋给缓冲区列。

SetTime(Int32, TimeSpan)

向列分配 TimeSpan 值 PipelineBuffer

SetUInt16(Int32, UInt16)

将 16 位无符号整数赋给缓冲区列。

SetUInt32(Int32, UInt32)

将 32 位无符号整数赋给缓冲区列。

SetUInt64(Int32, UInt64)

将 64 位无符号整数赋给缓冲区列。

适用于