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-разрядное целочисленное значение без знака столбцу буфера. |