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 설정합니다. 데이터 플로우 작업은 그래프의 다음 구성 요소로 이어지는 버퍼를 제공합니다.

동기식 출력과 목적지 구성 요소를 가진 변환 구성 요소는 메서드 내에서 ProcessInput 객체를 받습니다PipelineBuffer. PipelineBuffer 이 메서드에서 받은 값은 버퍼이며Input, 상류 컴포넌트가 추가한 행들을 포함합니다. 이 버퍼는 제한되어 있어 행을 추가하거나 제거하는 데 사용할 수 없습니다.

관리 PipelineBuffer 형 코드로 작성되었으며, 관리형 코드와 기본 IDTSBuffer100 COM 객체 간에 데이터를 마샬링하여 관리 데이터 흐름 구성 요소 개발자를 지원합니다.

통합 서비스 데이터 타입과 각 데이터 타입에 사용할 수 있는 클래스의 PipelineBuffer 대응 Get 하는 메서드 및 Set 메서드 전체 목록은 'Data Flow에서의 데이터 타입 작업 방법(Working with Data Types)'을 참조하세요.

생성자

Name Description
PipelineBuffer(IntPtr, PipelineBufferMode)

. 의 새로운 인스턴스를 인스턴스화합니다.PipelineBuffer

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

PipelineBuffer 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
ColumnCount

. 의 열 수를 얻습니다.PipelineBuffer

ColumnInfo

열에 대한 읽기 전용 메타데이터를 얻습니다.

CurrentRow

현재 행 PipelineBuffer의 인덱스를 얻습니다.

EndOfRowset

전류가 PipelineBuffer 최종 완충 장치인지 여부를 나타내는 값을 얻습니다.

Item[Int32]

현재 행에서 지정된 열의 값

Mode

a가 버퍼 IDTSOutput100 인지 IDTSInput100 버퍼인지 PipelineBuffer 나타내는 값을 받습니다.

RowCount

객체의 PipelineBuffer 행 수를 얻습니다.

RowSize

객체 내 PipelineBuffer 행 크기를 얻습니다.

RowStarts

로우의 시작점을 얻습니다.

메서드

Name Description
AddBlobData(Int32, Byte[], Int32)

특정 바이트 수의 배열을 열에 PipelineBuffer 추가합니다.

AddBlobData(Int32, Byte[])

열에 PipelineBuffer 바이트 배열을 추가합니다.

AddRow()

객체에 PipelineBuffer 행을 추가합니다.

DirectErrorRow(Int32, Int32, Int32, Int32)

속성이 참인 에 IDTSOutput100IsErrorOut 대해 행을 PipelineBuffer 보냅니다.

DirectErrorRow(Int32, Int32, Int32)

속성이 참인 에 IDTSOutput100IsErrorOut 대해 행을 PipelineBuffer 보냅니다.

DirectRow(Int32)

a PipelineBuffer 에서 지정된 IDTSOutput100행 로 전송합니다.

Dispose()

에서 사용하는 모든 리소스를 PipelineBuffer해제합니다.

Dispose(Boolean)

이 자원은 , 가 사용하는 PipelineBuffer비관리 자원을 해제하며, 선택적으로 관리되는 자원을 해제합니다.

Finalize()

에서 사용하는 모든 리소스를 PipelineBuffer해제합니다.

GetBlobData(Int32, Int32, Int32)

컬럼에 PipelineBuffer 저장된 이진 큰 객체(BLOB)에서 바이트 배열을 가져옵니다.

GetBlobLength(Int32)

이진 대형 객체(BLOB) PipelineBuffer 열에 포함된 바이트 수를 얻습니다.

GetBoolean(Int32)

열에 PipelineBuffer 저장된 bool 값을 얻습니다.

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)

스카이트 값을 열에 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비트 정수를 할당합니다.

적용 대상