次の方法で共有


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) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

関連項目

参照

Microsoft.SqlServer.Dts.Pipeline 名前空間