Share via


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 PipelineBuffer の新しいインスタンスをインスタンス化します。

先頭に戻る

プロパティ

  名前 説明
パブリック プロパティ ColumnCount PipelineBuffer の列数を取得します。
パブリック プロパティ CurrentRow PipelineBuffer での現在の行のインデックスを取得します。
パブリック プロパティ EndOfRowset 現在の PipelineBuffer が最終バッファかどうかを示す値を取得します。
パブリック プロパティ Item バッファ列に格納されているデータを取得します。
パブリック プロパティ Mode PipelineBuffer が IDTSInput100 バッファなのか、IDTSOutput100 バッファなのかを示す値を取得します。
パブリック プロパティ RowCount PipelineBuffer オブジェクトの行数を取得します。

先頭に戻る

メソッド

  名前 説明
パブリック メソッド 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 バッファ列に nullNothingnullptrunitNULL 参照 (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) のメンバーはすべて、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。