PipelineBuffer Class
データの行と列を含むメモリ内のデータ ストアを提供します。
名前空間: Microsoft.SqlServer.Dts.Pipeline
アセンブリ: Microsoft.SqlServer.PipelineHost (microsoft.sqlserver.pipelinehost.dll 内)
構文
'宣言
<DefaultMemberAttribute("Item")> _
Public Class PipelineBuffer
Implements IDisposable
[DefaultMemberAttribute("Item")]
public class PipelineBuffer : IDisposable
[DefaultMemberAttribute(L"Item")]
public ref class PipelineBuffer : IDisposable
/** @attribute DefaultMemberAttribute("Item") */
public class PipelineBuffer implements IDisposable
DefaultMemberAttribute("Item")
public class PipelineBuffer implements IDisposable
解説
PipelineBuffer は、行と列を含む、メモリ内の 2 次元データ ストアです。これは実行中にデータ フロー タスクによって作成され、マネージ データ フロー コンポーネントに提供されます。バッファに含まれる列は、グラフのコンポーネントの IDTSOutputColumnCollection90 コレクションの列に基づきます。
基になるコンポーネントと非同期の出力のコンポーネントは、下流コンポーネントに接続されている出力オブジェクトごとにバッファを受信します。これらのバッファは出力バッファとして参照され、行は含みません。出力バッファを受信するコンポーネントは、バッファに行を追加し、完了したら SetEndOfRowset メソッドを呼び出します。データ フロー タスクは、このバッファをグラフの次のコンポーネントに提供します。
同期出力の変換コンポーネントと対象になるコンポーネントは、ProcessInput メソッドで PipelineBuffer オブジェクトを受信します。このメソッドで受信される PipelineBuffer は、Input バッファで、上流コンポーネントによって追加された行が含まれています。このバッファは制限されており、行の追加に使用したり、このバッファから行を削除することはできません。
PipelineBuffer は、マネージ コードで記述され、マネージ コードと基になる IDTSBuffer90 COM オブジェクト間でデータをマーシャリングすることで、マネージ データ フロー コンポーネント開発者をサポートします。
継承階層
System.Object
Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer
使用例
次の例は、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)
{
if (!buffer.EndOfRowset)
{
IDTSInput90 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);
while (buffer.NextRow())
{
foreach (IDTSInputColumn90 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];
IDTSOutput90 output = ComponentMetaData.OutputCollection[0];
Random rand = new Random();
//Loop rows number of times
for(int r = 0; r < rows; r++)
{
buf.AddRow();
foreach( IDTSOutputColumn90 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 (Microsoft Visual Basic では共有 ) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォーム
開発プラットフォーム
サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。
対象プラットフォーム
サポートされているプラットフォームの一覧については、「SQL Server 2005 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。
参照
関連項目
PipelineBuffer Members
Microsoft.SqlServer.Dts.Pipeline Namespace