PipelineBuffer クラス

 

データの行と列を含むメモリ内のデータ ストアを提供します。

名前空間:   Microsoft.SqlServer.Dts.Pipeline
アセンブリ:  Microsoft.SqlServer.PipelineHost (Microsoft.SqlServer.PipelineHost.dll 内)

System.Object
  Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer

[DefaultMemberAttribute("Item")]
public class PipelineBuffer : IDisposable

名前説明
System_CAPS_protmethodPipelineBuffer(IntPtr, PipelineBufferMode)

PipelineBuffer の新しいインスタンスをインスタンス化します。

System_CAPS_pubmethodPipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean)

PipelineBuffer クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyColumnCount

PipelineBuffer の列数を取得します。

System_CAPS_pubpropertyColumnInfo

パイプライン バッファーの列情報を取得します。

System_CAPS_pubpropertyCurrentRow

PipelineBuffer での現在の行のインデックスを取得します。

System_CAPS_pubpropertyEndOfRowset

現在の PipelineBuffer が最終バッファーかどうかを示す値を取得します。

System_CAPS_pubpropertyItem[Int32]

バッファー列に格納されているデータを取得します。

System_CAPS_pubpropertyMode

PipelineBufferIDTSInput100 バッファーなのか、IDTSOutput100 バッファーなのかを示す値を取得します。

System_CAPS_pubpropertyRowCount

PipelineBuffer オブジェクトの行数を取得します。

System_CAPS_pubpropertyRowSize

PipelineBuffer オブジェクトの行のサイズを取得します。

System_CAPS_pubpropertyRowStarts

行の開始点を取得します。

名前説明
System_CAPS_pubmethodAddBlobData(Int32, Byte[])

PipelineBuffer 列にバイトの配列を追加します。

System_CAPS_pubmethodAddBlobData(Int32, Byte[], Int32)

指定されたバイト数の配列を PipelineBuffer 列に追加します。

System_CAPS_pubmethodAddRow()

PipelineBuffer オブジェクトに行を追加します。

System_CAPS_pubmethodDirectErrorRow(Int32, Int32, Int32)

PipelineBuffer プロパティが true である IDTSOutput100 に、IsErrorOut 行を送信します。

System_CAPS_pubmethodDirectErrorRow(Int32, Int32, Int32, Int32)

PipelineBuffer プロパティが true である IDTSOutput100 に、IsErrorOut 行を送信します。

System_CAPS_pubmethodDirectRow(Int32)

PipelineBuffer から指定された IDTSOutput100 に行を送信します。

System_CAPS_pubmethodDispose()

PipelineBuffer で使用されるすべてのリソースを解放します。

System_CAPS_protmethodDispose(Boolean)

PipelineBuffer によって使用されているアンマネージ リソースを解放します。オプションでマネージ リソースも解放できます。

System_CAPS_pubmethodEquals(Object)

(Object から継承されます。)

System_CAPS_protmethodFinalize()

PipelineBuffer で使用されるすべてのリソースを解放します。(Object.Finalize() をオーバーライドします。)

System_CAPS_pubmethodGetBlobData(Int32, Int32, Int32)

PipelineBuffer 列に格納されているバイナリ ラージ オブジェクト (BLOB) からバイトの配列を取得します。

System_CAPS_pubmethodGetBlobLength(Int32)

バイナリ ラージ オブジェクト (BLOB) PipelineBuffer 列に含まれるバイト数を取得します。

System_CAPS_pubmethodGetBoolean(Int32)

PipelineBuffer 列に格納されている bool 値を取得します。

System_CAPS_pubmethodGetByte(Int32)

PipelineBuffer 列に格納されている byte 値を取得します。

System_CAPS_pubmethodGetBytes(Int32)

バッファー列に格納されているバイトの配列を取得します。

System_CAPS_pubmethodGetColumnInfo(Int32)

BufferColumn 列の PipelineBuffer 構造体を取得します。

System_CAPS_pubmethodGetDate(Int32)

PipelineBuffer 列に格納されている DateTime 値を取得します。

System_CAPS_pubmethodGetDateTime(Int32)

PipelineBuffer 列に格納されている DateTime 値を取得します。

System_CAPS_pubmethodGetDateTimeOffset(Int32)

PipelineBuffer 列に格納されている DateTimeOffset 値を取得します。

System_CAPS_pubmethodGetDecimal(Int32)

PipelineBuffer 列に格納されている decimal 値を取得します。

System_CAPS_pubmethodGetDouble(Int32)

PipelineBuffer 列に格納されている double を取得します。

System_CAPS_pubmethodGetGuid(Int32)

PipelineBuffer 列に格納されている Guid 値を取得します。

System_CAPS_pubmethodGetHashCode()

(Object から継承されます。)

System_CAPS_pubmethodGetInt16(Int32)

PipelineBuffer 列に格納されている short を取得します。

System_CAPS_pubmethodGetInt32(Int32)

PipelineBuffer 列に格納されている int を取得します。

System_CAPS_pubmethodGetInt64(Int32)

PipelineBuffer 列に格納されている long を取得します。

System_CAPS_pubmethodGetSByte(Int32)

PipelineBuffer 列に格納されている SByte 値を取得します。

System_CAPS_pubmethodGetSingle(Int32)

PipelineBuffer 列に格納されている float を取得します。

System_CAPS_pubmethodGetString(Int32)

バッファー列に格納されている string を取得します。

System_CAPS_pubmethodGetTime(Int32)

PipelineBuffer 列に格納されている TimeSpan 値を取得します。

System_CAPS_pubmethodGetType()

(Object から継承されます。)

System_CAPS_pubmethodGetUInt16(Int32)

バッファー列に格納されている ushort 値を取得します。

System_CAPS_pubmethodGetUInt32(Int32)

バッファー列に格納されている UInt32 値を取得します。

System_CAPS_pubmethodGetUInt64(Int32)

バッファー列に格納されている ulong 値を取得します。

System_CAPS_pubmethodIsNull(Int32)

バッファー列のデータが null であるかどうかを確認します。

System_CAPS_protmethodMemberwiseClone()

(Object から継承されます。)

System_CAPS_pubmethodNextRow()

次の行に PipelineBuffer を進めます。

System_CAPS_pubmethodRemoveRow()

PipelineBuffer から現在の行を削除します。

System_CAPS_pubmethodResetBlobData(Int32)

指定された BLOB 列のコンテンツを削除します。

System_CAPS_pubmethodSetBoolean(Int32, Boolean)

PipelineBuffer 列に bool 値を割り当てます。

System_CAPS_pubmethodSetByte(Int32, Byte)

PipelineBuffer 列に byte を割り当てます。

System_CAPS_pubmethodSetBytes(Int32, Byte[])

バッファー列にバイトの配列を割り当てます。

System_CAPS_pubmethodSetDate(Int32, DateTime)

PipelineBuffer 列に DateTime 値を割り当てます。

System_CAPS_pubmethodSetDateTime(Int32, DateTime)

PipelineBuffer 列に DateTime 値を割り当てます。

System_CAPS_pubmethodSetDateTimeOffset(Int32, DateTimeOffset)

PipelineBuffer 列に DateTimeOffset 値を割り当てます。

System_CAPS_pubmethodSetDecimal(Int32, Decimal)

バッファー列に decimal を割り当てます。

System_CAPS_pubmethodSetDouble(Int32, Double)

PipelineBuffer 列に double を割り当てます。

System_CAPS_pubmethodSetEndOfRowset()

コンポーネントによるバッファーへの行の追加が完了したことを PipelineBuffer に通知します。

System_CAPS_pubmethodSetErrorInfo(Int32, Int32, Int32)

現在の PipelineBuffer 行のエラー情報を設定します。

System_CAPS_pubmethodSetGuid(Int32, Guid)

バッファー列に Guid を割り当てます。

System_CAPS_pubmethodSetInt16(Int32, Int16)

バッファー列に 16 ビットの符号付き整数を割り当てます。

System_CAPS_pubmethodSetInt32(Int32, Int32)

バッファー列に 32 ビットの符号付き整数を割り当てます。

System_CAPS_pubmethodSetInt64(Int32, Int64)

バッファー列に 64 ビットの符号付き整数を割り当てます。

System_CAPS_pubmethodSetNull(Int32)

バッファー列に null を割り当てます。

System_CAPS_pubmethodSetSByte(Int32, SByte)

バッファー列に 8 ビットの符号付き整数を割り当てます。

System_CAPS_pubmethodSetSingle(Int32, Single)

バッファー列に float を割り当てます。

System_CAPS_pubmethodSetString(Int32, String)

バッファー列に文字列を割り当てます。

System_CAPS_pubmethodSetTime(Int32, TimeSpan)

PipelineBuffer 列に TimeSpan 値を割り当てます。

System_CAPS_pubmethodSetUInt16(Int32, UInt16)

バッファー列に 16 ビットの符号なし整数を割り当てます。

System_CAPS_pubmethodSetUInt32(Int32, UInt32)

バッファー列に 32 ビットの符号なし整数を割り当てます。

System_CAPS_pubmethodSetUInt64(Int32, UInt64)

バッファー列に 64 ビットの符号なし整数を割り当てます。

System_CAPS_pubmethodToString()

(Object から継承されます。)

PipelineBuffer は、行と列を含む、メモリ内の 2 次元データ ストアです。 これは実行中にデータ フロー タスクによって作成され、マネージ データ フロー コンポーネントに提供されます。 バッファーに含まれる列は、グラフのコンポーネントの IDTSOutputColumnCollection100 コレクションの列に基づきます。

基になるコンポーネントと非同期出力のコンポーネントは、下流コンポーネントに接続されている出力オブジェクトごとにバッファーを受信します。 これらのバッファーは出力バッファーと呼ばれるものであり、行は格納されていません。 出力バッファーを受信するコンポーネントは、バッファーに行を追加し、完了したら SetEndOfRowset メソッドを呼び出します。 このメソッドにより、最終バッファーの EndOfRowset プロパティの値が true に設定されます。 データ フロー タスクは、このバッファーをグラフの次のコンポーネントに提供します。

同期出力の変換コンポーネントと対象になるコンポーネントは、PipelineBuffer メソッドで ProcessInput オブジェクトを受信します。 このメソッドで受信される PipelineBuffer は、Input バッファーで、上流コンポーネントによって追加された行が含まれています。 このバッファーは制限されており、行の追加に使用したり、このバッファーから行を削除することはできません。

PipelineBuffer は、マネージ コードで記述され、マネージ コードと基になる IDTSBuffer100 COM オブジェクトとの間でデータをマーシャリングすることで、マネージ データ フロー コンポーネント開発者をサポートします。

完全な一覧については Integration Services データ型と、対応する GetSet のメソッド、 PipelineBuffer クラスの各データ型で使用して、参照してください データ フロー内のデータ型を扱うします。

次の例は、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();
      }
   }
}

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: