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-битное целое число буферному столбцу. |