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