PipelineBuffer Класс

Определение

Предоставляет хранилище данных в памяти, содержащее строки и столбцы данных.

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
Наследование
PipelineBuffer
Реализации

Примеры

Следующий пример показывает компонент преобразования, который итерирует строки и столбцы PipelineBuffer из 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.  
         }  
      }  
      }  
   }  
}  

Следующий пример показывает исходный компонент, который добавляет строки в выходной буфер в 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 финальном буфере. Задача потока данных затем предоставляет этот буфер следующему компоненту графа.

Компоненты преобразования с синхронными выходами и компонентами назначения получают PipelineBuffer объекты в ProcessInput методе. Полученный PipelineBuffer в этом методе является Input буфером и содержит строки, добавленные выше по потоку. Этот буфер ограничен и не может использоваться для добавления или удаления строк из буфера.

Он написан на управляемом коде и поддерживает разработчиков компонентов PipelineBuffer управляемых потоков данных, сортируя данные между управляемым кодом и базовым IDTSBuffer100 объектом COM.

Полный список типов данных Integration Services и соответствующих методов Set и методов PipelineBuffer класса для каждого типа данных см. раздел «Работа с типами данных в Поток данных».Get

Конструкторы

Имя Описание
PipelineBuffer(IntPtr, PipelineBufferMode)

Создаёт новый экземпляр PipelineBuffer.

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

Инициализирует новый экземпляр класса PipelineBuffer.

Свойства

Имя Описание
ColumnCount

Получает количество столбцов в PipelineBuffer.

ColumnInfo

Получает метаданные только для чтения о колонке.

CurrentRow

Получает индекс текущей строки в PipelineBuffer.

EndOfRowset

Получает значение, указывающее, является ли ток PipelineBuffer конечным буфером.

Item[Int32]

Значение указанного столбца в текущей строке

Mode

Получает значение, указывающее, является PipelineBufferIDTSInput100 ли a буфером или IDTSOutput100 буфером.

RowCount

Получает количество строк в PipelineBuffer объекте.

RowSize

Получает размер строки в объекте PipelineBuffer .

RowStarts

Получает начальную точку ряда.

Методы

Имя Описание
AddBlobData(Int32, Byte[], Int32)

Добавляет массив определённого количества байт в столбец PipelineBuffer .

AddBlobData(Int32, Byte[])

Добавляет массив байтов в столбец PipelineBuffer .

AddRow()

Добавляет строку к PipelineBuffer объекту.

DirectErrorRow(Int32, Int32, Int32, Int32)

Отправляет PipelineBuffer строку в , IDTSOutput100 свойство IsErrorOut которого истинно.

DirectErrorRow(Int32, Int32, Int32)

Отправляет PipelineBuffer строку в , IDTSOutput100 свойство IsErrorOut которого истинно.

DirectRow(Int32)

Отправляет строку из a PipelineBuffer в указанный IDTSOutput100.

Dispose()

Освобождает все ресурсы, используемые параметром PipelineBuffer.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые PipelineBuffer, и, по желанию, освобождает управляемые ресурсы.

Finalize()

Освобождает все ресурсы, используемые параметром PipelineBuffer.

GetBlobData(Int32, Int32, Int32)

Получает массив байтов из бинарного большого объекта (BLOB), хранящегося в PipelineBuffer столбце.

GetBlobLength(Int32)

Получает количество байт, содержащихся в столбце большого бинарного объекта (BLOB PipelineBuffer ).

GetBoolean(Int32)

Получает значение bool, хранящееся PipelineBuffer в столбце.

GetByte(Int32)

Получает значение байта, хранящегося в столбце PipelineBuffer .

GetBytes(Int32)

Получает массив байт, хранящихся в буферном столбце.

GetColumnInfo(Int32)

Получает структуру BufferColumn для колонки PipelineBuffer .

GetDate(Int32)

Получает значение DateTime, PipelineBuffer хранящееся в столбце.

GetDateTime(Int32)

Получает значение DateTime, PipelineBuffer хранящееся в столбце.

GetDateTimeOffset(Int32)

Получает значение DateTimeOffset, PipelineBuffer хранящееся в столбце.

GetDecimal(Int32)

Получает десятичное значение, PipelineBuffer хранящееся в столбце.

GetDouble(Int32)

Двойник хранит в PipelineBuffer колонке.

GetGuid(Int32)

Получает значение Guid, PipelineBuffer хранящееся в столбце.

GetInt16(Int32)

Короткое замыкание сохраняется PipelineBuffer в колонке.

GetInt32(Int32)

Интеллект сохраняется в PipelineBuffer столбце.

GetInt64(Int32)

Получает длинный материал, PipelineBuffer хранящийся в колонке.

GetSByte(Int32)

Получает значение SByte, хранящееся в PipelineBuffer столбце.

GetSingle(Int32)

Плавающий файл сохраняется в PipelineBuffer колонке.

GetString(Int32)

Строка сохраняется в колонке буфера.

GetTime(Int32)

Получает значение TimeSpan, хранящееся в столбце PipelineBuffer .

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)

Присваивает столбцу значение PipelineBuffer DateTime.

SetDateTime(Int32, DateTime)

Присваивает столбцу значение PipelineBuffer DateTime.

SetDateTimeOffset(Int32, DateTimeOffset)

Присваивает столбцу значение PipelineBuffer DateTimeOffset.

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)

Присваивает столбцу значение PipelineBuffer TimeSpan.

SetUInt16(Int32, UInt16)

Назначает беззнаменное 16-битное целое число буферному столбцу.

SetUInt32(Int32, UInt32)

Назначает беззнаковое 32-битное целое число буферному столбцу.

SetUInt64(Int32, UInt64)

Назначает беззнаменное 64-битное целое число буферному столбцу.

Применяется к