次の方法で共有


PipelineBuffer クラス

定義

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

public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
    interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
継承
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();  
      }  
   }  
}  

注釈

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

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

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

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

Integration Services データ型の完全な一覧と、各データ型で使用するクラスの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[])

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

AddBlobData(Int32, Byte[], Int32)

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

AddRow()

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

DirectErrorRow(Int32, Int32, Int32)

PipelineBufferプロパティが true の行をIDTSOutput100IsErrorOut送信します。

DirectErrorRow(Int32, Int32, Int32, Int32)

PipelineBufferプロパティが true の行をIDTSOutput100IsErrorOut送信します。

DirectRow(Int32)

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

Dispose()

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

Dispose(Boolean)

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

Finalize()

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

GetBlobData(Int32, Int32, Int32)

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

GetBlobLength(Int32)

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

GetBoolean(Int32)

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

GetByte(Int32)

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

GetBytes(Int32)

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

GetColumnInfo(Int32)

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

GetDate(Int32)

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

GetDateTime(Int32)

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

GetDateTimeOffset(Int32)

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

GetDecimal(Int32)

列に格納されている 10 進数の値を PipelineBuffer 取得します。

GetDouble(Int32)

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

GetGuid(Int32)

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

GetInt16(Int32)

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

GetInt32(Int32)

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

GetInt64(Int32)

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

GetSByte(Int32)

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

GetSingle(Int32)

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

GetString(Int32)

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

GetTime(Int32)

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

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)

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

SetDateTime(Int32, DateTime)

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

SetDateTimeOffset(Int32, DateTimeOffset)

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

SetDecimal(Int32, Decimal)

バッファー列に 10 進数を割り当てます。

SetDouble(Int32, Double)

列に 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)

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

SetUInt16(Int32, UInt16)

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

SetUInt32(Int32, UInt32)

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

SetUInt64(Int32, UInt64)

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

適用対象