PipelineBuffer クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
行と列のデータを含むメモリ内データストアを提供します。
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 に設定します。 データフロータスクは、グラフ内の次のコンポーネントへのバッファを提供します。
同期出力と宛先コンポーネントを持つ変換コンポーネントは、ProcessInputメソッドでPipelineBufferオブジェクトを受け取ります。 この方法で受信される PipelineBuffer は Input バッファであり、上流コンポーネントによって追加された行を含みます。 このバッファは制限されており、行の追加や削除には使えません。
PipelineBufferはマネージドコードで書かれ、マネージドコードと基盤となるIDTSBuffer100COMオブジェクト間でデータをマーシャリングすることでマネージドデータフローコンポーネント開発者をサポートします。
統合サービスのデータ型の完全なリストと、各データ型で使用するPipelineBufferクラスの対応するGet・Setメソッドについては、Data Flowの「データ型の操作」を参照してください。
コンストラクター
| 名前 | 説明 |
|---|---|
| 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 |
列の出発点を取る。 |