PipelineBuffer クラス
データの行と列を含むメモリ内のデータ ストアを提供します。
継承階層
System.Object
Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer
名前空間: Microsoft.SqlServer.Dts.Pipeline
アセンブリ: Microsoft.SqlServer.PipelineHost (Microsoft.SqlServer.PipelineHost.dll)
構文
'宣言
Public Class PipelineBuffer _
Implements IDisposable
'使用
Dim instance As PipelineBuffer
public class PipelineBuffer : IDisposable
public ref class PipelineBuffer : IDisposable
type PipelineBuffer =
class
interface IDisposable
end
public class PipelineBuffer implements IDisposable
PipelineBuffer 型は、以下のメンバーを公開しています。
コンストラクター
名前 | 説明 | |
---|---|---|
PipelineBuffer(IntPtr, PipelineBufferMode) | PipelineBuffer の新しいインスタンスをインスタンス化します。 | |
PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean) |
先頭に戻る
プロパティ
名前 | 説明 | |
---|---|---|
ColumnCount | PipelineBuffer の列数を取得します。 | |
ColumnInfo | ||
CurrentRow | PipelineBuffer での現在の行のインデックスを取得します。 | |
EndOfRowset | 現在の PipelineBuffer が最終バッファーかどうかを示す値を取得します。 | |
Item | バッファー列に格納されているデータを取得します。 | |
Mode | PipelineBuffer が IDTSInput100 バッファーなのか、IDTSOutput100 バッファーなのかを示す値を取得します。 | |
RowCount | PipelineBuffer オブジェクトの行数を取得します。 | |
RowSize | ||
RowStarts |
先頭に戻る
メソッド
名前 | 説明 | |
---|---|---|
AddBlobData(Int32, array<Byte[]) | PipelineBuffer 列にバイトの配列を追加します。 | |
AddBlobData(Int32, array<Byte[], Int32) | 指定されたバイト数の配列を PipelineBuffer 列に追加します。 | |
AddRow | PipelineBuffer オブジェクトに行を追加します。 | |
DirectErrorRow(Int32, Int32, Int32) | IsErrorOut プロパティが true である IDTSOutput100 に、PipelineBuffer 行を送信します。 | |
DirectErrorRow(Int32, Int32, Int32, Int32) | IsErrorOut プロパティが true である IDTSOutput100 に、PipelineBuffer 行を送信します。 | |
DirectRow | PipelineBuffer から指定された IDTSOutput100 に行を送信します。 | |
Dispose() | PipelineBuffer で使用されるすべてのリソースを解放します。 | |
Dispose(Boolean) | PipelineBuffer によって使用されているアンマネージ リソースを解放します。オプションでマネージ リソースも解放できます。 | |
Equals | (Object から継承されています。) | |
Finalize | PipelineBuffer で使用されるすべてのリソースを解放します。 (Object.Finalize() をオーバーライドします。) | |
GetBlobData | PipelineBuffer 列に格納されているバイナリ ラージ オブジェクト (BLOB) からバイトの配列を取得します。 | |
GetBlobLength | バイナリ ラージ オブジェクト (BLOB) PipelineBuffer 列に含まれるバイト数を取得します。 | |
GetBoolean | PipelineBuffer 列に格納されている bool 値を取得します。 | |
GetByte | PipelineBuffer 列に格納されている byte 値を取得します。 | |
GetBytes | バッファー列に格納されているバイトの配列を取得します。 | |
GetColumnInfo | PipelineBuffer 列の BufferColumn 構造体を取得します。 | |
GetDate | PipelineBuffer 列に格納されている DateTime 値を取得します。 | |
GetDateTime | PipelineBuffer 列に格納されている DateTime 値を取得します。 | |
GetDateTimeOffset | PipelineBuffer 列に格納されている DateTimeOffset 値を取得します。 | |
GetDecimal | PipelineBuffer 列に格納されている decimal 値を取得します。 | |
GetDouble | PipelineBuffer 列に格納されている double を取得します。 | |
GetGuid | PipelineBuffer 列に格納されている Guid 値を取得します。 | |
GetHashCode | (Object から継承されています。) | |
GetInt16 | PipelineBuffer 列に格納されている short を取得します。 | |
GetInt32 | PipelineBuffer 列に格納されている int を取得します。 | |
GetInt64 | PipelineBuffer 列に格納されている long を取得します。 | |
GetSByte | PipelineBuffer 列に格納されている SByte 値を取得します。 | |
GetSingle | PipelineBuffer 列に格納されている float を取得します。 | |
GetString | バッファー列に格納されている string を取得します。 | |
GetTime | PipelineBuffer 列に格納されている TimeSpan 値を取得します。 | |
GetType | (Object から継承されています。) | |
GetUInt16 | バッファー列に格納されている ushort 値を取得します。 | |
GetUInt32 | バッファー列に格納されている UInt32 値を取得します。 | |
GetUInt64 | バッファー列に格納されている ulong 値を取得します。 | |
IsNull | バッファー列のデータが null であるかどうかを確認します。 | |
MemberwiseClone | (Object から継承されています。) | |
NextRow | 次の行に PipelineBuffer を進めます。 | |
RemoveRow | PipelineBuffer から現在の行を削除します。 | |
ResetBlobData | 指定された BLOB 列のコンテンツを削除します。 | |
SetBoolean | PipelineBuffer 列に bool 値を割り当てます。 | |
SetByte | PipelineBuffer 列に byte を割り当てます。 | |
SetBytes | バッファー列にバイトの配列を割り当てます。 | |
SetDate | PipelineBuffer 列に DateTime 値を割り当てます。 | |
SetDateTime | PipelineBuffer 列に DateTime 値を割り当てます。 | |
SetDateTimeOffset | PipelineBuffer 列に DateTimeOffset 値を割り当てます。 | |
SetDecimal | バッファー列に decimal を割り当てます。 | |
SetDouble | PipelineBuffer 列に double を割り当てます。 | |
SetEndOfRowset | コンポーネントによるバッファーへの行の追加が完了したことを PipelineBuffer に通知します。 | |
SetErrorInfo | 現在の PipelineBuffer 行のエラー情報を設定します。 | |
SetGuid | バッファー列に Guid を割り当てます。 | |
SetInt16 | バッファー列に 16 ビットの符号付き整数を割り当てます。 | |
SetInt32 | バッファー列に 32 ビットの符号付き整数を割り当てます。 | |
SetInt64 | バッファー列に 64 ビットの符号付き整数を割り当てます。 | |
SetNull | バッファー列に nullNULL 参照 (Visual Basic では Nothing) を割り当てます。 | |
SetSByte | バッファー列に 8 ビットの符号付き整数を割り当てます。 | |
SetSingle | バッファー列に float を割り当てます。 | |
SetString | バッファー列に文字列を割り当てます。 | |
SetTime | PipelineBuffer 列に TimeSpan 値を割り当てます。 | |
SetUInt16 | バッファー列に 16 ビットの符号なし整数を割り当てます。 | |
SetUInt32 | バッファー列に 32 ビットの符号なし整数を割り当てます。 | |
SetUInt64 | バッファー列に 64 ビットの符号なし整数を割り当てます。 | |
ToString | (Object から継承されています。) |
先頭に戻る
説明
PipelineBuffer は、行と列を含む、メモリ内の 2 次元データ ストアです。 これは実行中にデータ フロー タスクによって作成され、マネージ データ フロー コンポーネントに提供されます。 バッファーに含まれる列は、グラフのコンポーネントの IDTSOutputColumnCollection100 コレクションの列に基づきます。
基になるコンポーネントと非同期出力のコンポーネントは、下流コンポーネントに接続されている出力オブジェクトごとにバッファーを受信します。 これらのバッファーは出力バッファーと呼ばれるものであり、行は格納されていません。 出力バッファーを受信するコンポーネントは、バッファーに行を追加し、完了したら SetEndOfRowset メソッドを呼び出します。 このメソッドにより、最終バッファーの EndOfRowset プロパティの値が true に設定されます。 データ フロー タスクは、このバッファーをグラフの次のコンポーネントに提供します。
同期出力の変換コンポーネントと対象になるコンポーネントは、ProcessInput メソッドで PipelineBuffer オブジェクトを受信します。 このメソッドで受信される PipelineBuffer は、Input バッファーで、上流コンポーネントによって追加された行が含まれています。 このバッファーは制限されており、行の追加に使用したり、このバッファーから行を削除することはできません。
PipelineBuffer は、マネージ コードで記述され、マネージ コードと基になる IDTSBuffer100 COM オブジェクトとの間でデータをマーシャリングすることで、マネージ データ フロー コンポーネント開発者をサポートします。
Integration Services のデータ型と、それぞれのデータ型に対して使用する、PipelineBuffer クラスの対応する Get メソッドおよび Set メソッドの一覧については、「データ フロー内のデータ型の処理」を参照してください。
使用例
次の例は、ProcessInput で PipelineBuffer の行および列を繰り返す変換コンポーネントを示します。
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();
}
}
}
スレッド セーフ
この型の public static (Visual Basic では Shared) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。