PipelineBuffer 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터의 행과 열을 포함하는 메모리 내 데이터 저장소를 제공합니다.
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 |
로우의 시작점을 얻습니다. |