言語

PipelineBuffer クラス

定義

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

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オブジェクトを受け取ります。 この方法で受信される PipelineBufferInput バッファであり、上流コンポーネントによって追加された行を含みます。 このバッファは制限されており、行の追加や削除には使えません。

PipelineBufferはマネージドコードで書かれ、マネージドコードと基盤となるIDTSBuffer100COMオブジェクト間でデータをマーシャリングすることでマネージドデータフローコンポーネント開発者をサポートします。

統合サービスのデータ型の完全なリストと、各データ型で使用するPipelineBufferクラスの対応するGetSetメソッドについては、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

PipelineBufferIDTSInput100バッファかIDTSOutput100バッファかを示す値が得られます。

RowCount

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

RowSize

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

RowStarts

列の出発点を取る。

メソッド

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

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

AddBlobData(Int32, Byte[])

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

AddRow()

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

DirectErrorRow(Int32, Int32, Int32, Int32)

IsErrorOutプロパティが真である IDTSOutput100PipelineBuffer行を送信します。

DirectErrorRow(Int32, Int32, Int32)

IsErrorOutプロパティが真である IDTSOutput100PipelineBuffer行を送信します。

DirectRow(Int32)

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

Dispose()

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

Dispose(Boolean)

PipelineBufferが使用している管理されていないリソースを解放し、オプションで管理されたリソースも解放します。

Finalize()

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

GetBlobData(Int32, Int32, Int32)

PipelineBuffer列に保存されたバイナリの大きなオブジェクト(BLOB)からバイトの配列を取得します。

GetBlobLength(Int32)

列の2進ラジオブジェクト(BLOB)に含まれるバイト数 PipelineBuffer 取得します。

GetBoolean(Int32)

PipelineBuffer列に保存されたブール値を取得します。

GetByte(Int32)

PipelineBuffer列に保存されたバイト値を取得します。

GetBytes(Int32)

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

GetColumnInfo(Int32)

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

GetDate(Int32)

PipelineBuffer列に保存されたDateTimeの値を取得します。

GetDateTime(Int32)

PipelineBuffer列に保存されたDateTimeの値を取得します。

GetDateTimeOffset(Int32)

PipelineBuffer列に保存されたDateTimeOffsetの値を取得します。

GetDecimal(Int32)

PipelineBuffer列に格納された小数点の数値を取得します。

GetDouble(Int32)

ダブルは PipelineBuffer 列に格納されます。

GetGuid(Int32)

PipelineBuffer列に保存されたGuid値を受け取ります。

GetInt16(Int32)

短編を PipelineBuffer 欄に保存します。

GetInt32(Int32)

intを PipelineBuffer 列に保存します。

GetInt64(Int32)

長く保存された PipelineBuffer 列に入ります。

GetSByte(Int32)

SByteの値を PipelineBuffer 列に保存します。

GetSingle(Int32)

フロートを PipelineBuffer カラムに格納します。

GetString(Int32)

バッファ列に格納された文字列を取得します。

GetTime(Int32)

PipelineBuffer列に保存されたTimeSpan値を取得します。

GetUInt16(Int32)

バッファ列に保存されたushort値を取得します。

GetUInt32(Int32)

バッファ列に保存されたUInt32の値を取得します。

GetUInt64(Int32)

バッファ列に格納されたulongの値を取得します。

IsNull(Int32)

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

NextRow()

PipelineBufferを次の列に進めます。

RemoveRow()

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

ResetBlobData(Int32)

指定されたBLOB列の内容を削除します。

SetBoolean(Int32, Boolean)

PipelineBuffer列にブール値を割り当てます。

SetByte(Int32, Byte)

PipelineBuffer列にバイトを割り当てます。

SetBytes(Int32, Byte[])

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

SetDate(Int32, DateTime)

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

SetDateTime(Int32, DateTime)

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

SetDateTimeOffset(Int32, DateTimeOffset)

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

SetDecimal(Int32, Decimal)

バッファ列に小数点を割り当てます。

SetDouble(Int32, Double)

PipelineBuffer列にダブルを割り当てる。

SetEndOfRowset()

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

SetErrorInfo(Int32, Int32, Int32)

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

SetGuid(Int32, Guid)

バッファカラムにGuidを割り当てます。

SetInt16(Int32, Int16)

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

SetInt32(Int32, Int32)

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

SetInt64(Int32, Int64)

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

SetNull(Int32)

バッファカラムにnullを割り当てます。

SetSByte(Int32, SByte)

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

SetSingle(Int32, Single)

バッファカラムにfloatを割り当てます。

SetString(Int32, String)

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

SetTime(Int32, TimeSpan)

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

SetUInt16(Int32, UInt16)

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

SetUInt32(Int32, UInt32)

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

SetUInt64(Int32, UInt64)

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

適用対象