PipelineBuffer 類別
Provides an in-memory data store containing rows and columns of data.
繼承階層
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(IntPtr, PipelineBufferMode) | Instantiates a new instance of the PipelineBuffer. | |
PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean) |
上層
屬性
名稱 | 說明 | |
---|---|---|
ColumnCount | Gets the number of columns in the PipelineBuffer. | |
ColumnInfo | ||
CurrentRow | Gets the index of the current row in the PipelineBuffer. | |
EndOfRowset | Gets a value indicating whether the current PipelineBuffer is the final buffer. | |
Item | Gets the data stored in a buffer column. | |
Mode | Gets a value indicating whether a PipelineBuffer is an IDTSInput100 buffer or an IDTSOutput100 buffer. | |
RowCount | Gets the number of rows in the PipelineBuffer object. | |
RowSize | ||
RowStarts |
上層
方法
名稱 | 說明 | |
---|---|---|
AddBlobData(Int32, array<Byte[]) | Adds an array of bytes to a PipelineBuffer column. | |
AddBlobData(Int32, array<Byte[], Int32) | Adds an array of a specified number of bytes to a PipelineBuffer column. | |
AddRow | Adds a row to the PipelineBuffer object. | |
DirectErrorRow(Int32, Int32, Int32) | Sends a PipelineBuffer row to an IDTSOutput100 whose IsErrorOut property is true. | |
DirectErrorRow(Int32, Int32, Int32, Int32) | Sends a PipelineBuffer row to an IDTSOutput100 whose IsErrorOut property is true. | |
DirectRow | Sends a row from a PipelineBuffer to the specified IDTSOutput100. | |
Dispose() | Releases all resources used by the PipelineBuffer. | |
Dispose(Boolean) | Releases the unmanaged resources that are used by the PipelineBuffer, and optionally releases the managed resources. | |
Equals | (繼承自 Object。) | |
Finalize | Releases all resources used by the PipelineBuffer. (覆寫 Object.Finalize()。) | |
GetBlobData | Retrieves an array of bytes from a binary large object (BLOB) stored in a PipelineBuffer column. | |
GetBlobLength | Gets the number of bytes contained in a binary large object (BLOB) PipelineBuffer column. | |
GetBoolean | Gets the bool value stored in the PipelineBuffer column. | |
GetByte | Gets the byte value stored in the PipelineBuffer column. | |
GetBytes | Gets the array of bytes stored in a buffer column. | |
GetColumnInfo | Retrieves the BufferColumn structure for a PipelineBuffer column. | |
GetDate | Gets the DateTime value stored in the PipelineBuffer column. | |
GetDateTime | Gets the DateTime value stored in the PipelineBuffer column. | |
GetDateTimeOffset | Gets the DateTimeOffset value stored in the PipelineBuffer column. | |
GetDecimal | Gets the decimal value stored in the PipelineBuffer column. | |
GetDouble | Gets the double stored in the PipelineBuffer column. | |
GetGuid | Gets the Guid value stored in the PipelineBuffer column. | |
GetHashCode | (繼承自 Object。) | |
GetInt16 | Gets the short stored in the PipelineBuffer column. | |
GetInt32 | Gets the int stored in a PipelineBuffer column. | |
GetInt64 | Gets the long stored in the PipelineBuffer column. | |
GetSByte | Gets the SByte value stored in a PipelineBuffer column. | |
GetSingle | Gets the float stored in a PipelineBuffer column. | |
GetString | Gets the string stored in the buffer column. | |
GetTime | Gets the TimeSpan value stored in the PipelineBuffer column. | |
GetType | (繼承自 Object。) | |
GetUInt16 | Gets the ushort value stored in the buffer column. | |
GetUInt32 | Gets the UInt32 value stored in the buffer column. | |
GetUInt64 | Gets the ulong value stored in the buffer column. | |
IsNull | Checks to see if the data in a buffer column is null. | |
MemberwiseClone | (繼承自 Object。) | |
NextRow | Advances the PipelineBuffer to the next row. | |
RemoveRow | Removes the current row from the PipelineBuffer. | |
ResetBlobData | Deletes the contents of the specified BLOB column. | |
SetBoolean | Assigns a bool value to a PipelineBuffer column. | |
SetByte | Assigns a byte to a PipelineBuffer column. | |
SetBytes | Assigns an array of bytes to a buffer column. | |
SetDate | Assigns a DateTime value to the PipelineBuffer column. | |
SetDateTime | Assigns a DateTime value to the PipelineBuffer column. | |
SetDateTimeOffset | Assigns a DateTimeOffset value to the PipelineBuffer column. | |
SetDecimal | Assigns a decimal to a buffer column. | |
SetDouble | Assigns a double to a PipelineBuffer column. | |
SetEndOfRowset | Notifies the PipelineBuffer that a component has finished adding rows to the buffer. | |
SetErrorInfo | Sets the error information for the current PipelineBuffer row. | |
SetGuid | Assigns a Guid to a buffer column. | |
SetInt16 | Assigns a 16-bit signed integer to a buffer column. | |
SetInt32 | Assigns a 32-bit signed integer to a buffer column. | |
SetInt64 | Assigns a 64-bit signed integer to a buffer column. | |
SetNull | Assigns nullnull 參考 (在 Visual Basic 中為 Nothing) to a buffer column. | |
SetSByte | Assigns a signed 8-bit integer to a buffer column. | |
SetSingle | Assigns a float to a buffer column. | |
SetString | Assigns a string to a buffer column. | |
SetTime | Assigns a TimeSpan value to the PipelineBuffer column. | |
SetUInt16 | Assigns an unsigned 16-bit integer to a buffer column. | |
SetUInt32 | Assigns an unsigned 32-bit integer to a buffer column. | |
SetUInt64 | Assigns an unsigned 64-bit integer to a buffer column. | |
ToString | (繼承自 Object。) |
上層
備註
The PipelineBuffer is an in-memory two-dimensional data store containing rows and columns. It is created by the data flow task and supplied to managed data flow components during execution. The columns contained in a buffer are based on the columns in the IDTSOutputColumnCollection100 collections of the components in the graph.
Source components and components with asynchronous outputs receive a buffer for each of the output objects that are connected to a downstream component. These buffers are referred to as output buffers and do not contain rows. The component that receives the output buffer adds rows to the buffer and calls the SetEndOfRowset method when finished. This method sets the value of the EndOfRowset property to true on the final buffer. The data flow task then provides that buffer to the next component in the graph.
Transformation components with synchronous outputs and destination components receive PipelineBuffer objects in the ProcessInput method. The PipelineBuffer received in this method is an Input buffer and contains the rows that were added to by upstream components. This buffer is restricted and cannot be used to add or remove rows from the buffer.
The PipelineBuffer is written in managed code and supports managed data flow component developers by marshalling data between managed code and the underlying IDTSBuffer100 COM object.
For a complete list of Integration Services data types and the corresponding Get and Set methods of the PipelineBuffer class to use with each data type, see 使用資料流程中的資料類型.
範例
The following example shows a transformation component that iterates the rows and columns of a PipelineBuffer in 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.
}
}
}
}
}
The following example shows a source component that adds rows to the output buffer in 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();
}
}
}
執行緒安全性
這個型別的任何公用 static (在 Visual Basic 中為 Shared) 成員都是執行緒安全的。並不是所有的執行個體成員都保證可以用於所有的執行緒。