Поделиться через


PipelineBuffer Класс

Определение

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

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

Примеры

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

В следующем примере показан исходный компонент, который добавляет строки в выходной буфер 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 и соответствующих и методов класса для использования с каждым типом данных см. в разделе "Работа с типами данных" в Поток данных.PipelineBufferSetGet

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

PipelineBuffer(IntPtr, PipelineBufferMode)

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

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

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

Свойства

ColumnCount

Возвращает число столбцов в PipelineBuffer.

ColumnInfo

Возвращает доступные только для чтения метаданные о столбце.

CurrentRow

Возвращает индекс текущей строки в PipelineBuffer.

EndOfRowset

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

Item[Int32]

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

Mode

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

RowCount

Возвращает количество строк в объекте PipelineBuffer.

RowSize

Возвращает размер строки в объекте PipelineBuffer.

RowStarts

Возвращает начальную точку строки.

Методы

AddBlobData(Int32, Byte[])

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

AddBlobData(Int32, Byte[], Int32)

Добавляет массив с указанным числом байтов в столбец PipelineBuffer.

AddRow()

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

DirectErrorRow(Int32, Int32, Int32)

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

DirectErrorRow(Int32, Int32, Int32, Int32)

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

DirectRow(Int32)

Передает строку из PipelineBuffer в указанный IDTSOutput100.

Dispose()

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

Dispose(Boolean)

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

Finalize()

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

GetBlobData(Int32, Int32, Int32)

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

GetBlobLength(Int32)

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

GetBoolean(Int32)

Возвращает логическое значение, хранящееся в столбце 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)

Возвращает значение типа float, хранящееся в столбце 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)

Удаляет содержимое указанного столбца большого двоичного объекта.

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)

Присваивает значение типа float столбцу буфера.

SetString(Int32, String)

Присваивает значение типа string столбцу буфера.

SetTime(Int32, TimeSpan)

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

SetUInt16(Int32, UInt16)

Присваивает 16-разрядное целочисленное значение без знака столбцу буфера.

SetUInt32(Int32, UInt32)

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

SetUInt64(Int32, UInt64)

Присваивает 64-разрядное целочисленное значение без знака столбцу буфера.

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