PipelineBuffer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen Datenspeicher im Arbeitsspeicher bereit, der Datenzeilen und -spalten enthält.
public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
- Vererbung
-
PipelineBuffer
- Implementiert
Beispiele
Im folgenden Beispiel wird eine Transformationskomponente gezeigt, die die Zeilen und Spalten einer PipelineBuffer In ProcessInputbeschreibt.
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.
}
}
}
}
}
Im folgenden Beispiel wird eine Quellkomponente dargestellt, die Zeilen zum Ausgabepuffer 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();
}
}
}
Hinweise
Es PipelineBuffer handelt sich um einen zweidimensionalen Datenspeicher mit Zeilen und Spalten. Es wird von der Datenflussaufgabe erstellt und für verwaltete Datenflusskomponenten während der Ausführung bereitgestellt. Die spalten, die in einem Puffer enthalten sind, basieren auf den Spalten in den IDTSOutputColumnCollection100 Sammlungen der Komponenten im Diagramm.
Quellkomponenten und Komponenten mit asynchronen Ausgabeausgaben erhalten einen Puffer für jede der Ausgabeobjekte, die mit einer nachgelagerten Komponente verbunden sind. Diese Puffer werden als Ausgabepuffer bezeichnet und enthalten keine Zeilen. Die Komponente, die den Ausgabepuffer empfängt, fügt dem Puffer Zeilen hinzu und ruft die SetEndOfRowset Methode beim Abschluss auf. Diese Methode legt den Wert der EndOfRowset Eigenschaft true
auf den endgültigen Puffer fest. Der Datenflussvorgang stellt dann diesen Puffer für die nächste Komponente im Diagramm bereit.
Transformationskomponenten mit synchronen Ausgabeen und Zielkomponenten empfangen PipelineBuffer Objekte in der ProcessInput Methode. Der PipelineBuffer Empfangene in dieser Methode ist ein Input Puffer und enthält die Zeilen, die von vorgelagerten Komponenten hinzugefügt wurden. Dieser Puffer ist eingeschränkt und kann nicht zum Hinzufügen oder Entfernen von Zeilen aus dem Puffer verwendet werden.
Das PipelineBuffer wird in verwaltetem Code geschrieben und unterstützt verwaltete Datenflusskomponentenentwickler, indem Daten zwischen verwaltetem Code und dem zugrunde IDTSBuffer100 liegenden COM-Objekt ge marshallt werden.
Eine vollständige Liste der Integration Services-Datentypen und die entsprechenden Get
und Set
methoden der PipelineBuffer Klasse, die mit jedem Datentyp verwendet werden sollen, finden Sie unter Arbeiten mit Datentypen im Datenfluss.
Konstruktoren
PipelineBuffer(IntPtr, PipelineBufferMode) |
Instanziiert eine neue Instanz von PipelineBuffer. |
PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean) |
Initialisiert eine neue Instanz der PipelineBuffer-Klasse. |
Eigenschaften
ColumnCount |
Ruft die Anzahl der Spalten in PipelineBuffer ab. |
ColumnInfo |
Ruft schreibgeschützte Metadaten zur Spalte ab. |
CurrentRow |
Ruft den Index der aktuellen Zeile in PipelineBuffer ab. |
EndOfRowset |
Ruft einen Wert ab, der angibt, ob der aktuelle PipelineBuffer der endgültige Puffer ist. |
Item[Int32] |
Wert der angegebenen Spalte in der aktuellen Zeile |
Mode |
Ruft einen Wert ab, der angibt, ob ein PipelineBuffer ein IDTSInput100-Puffer oder ein IDTSOutput100-Puffer ist. |
RowCount |
Ruft die Anzahl der Zeilen im PipelineBuffer-Objekt ab. |
RowSize |
Ruft die Größe der Zeile im PipelineBuffer-Objekt ab |
RowStarts |
Ruft den Ausgangspunkt der Zeile ab |
Methoden
AddBlobData(Int32, Byte[]) |
Fügt einer PipelineBuffer-Spalte ein Bytearray hinzu. |
AddBlobData(Int32, Byte[], Int32) |
Fügt einer PipelineBuffer-Spalte ein Array aus einer angegebenen Anzahl von Bytes hinzu. |
AddRow() |
Fügt dem PipelineBuffer-Objekt eine Zeile hinzu. |
DirectErrorRow(Int32, Int32, Int32) |
Sendet eine Zeile an eine PipelineBufferIDTSOutput100 Eigenschaft, deren IsErrorOut Eigenschaft wahr ist. |
DirectErrorRow(Int32, Int32, Int32, Int32) |
Sendet eine Zeile an eine PipelineBufferIDTSOutput100 Eigenschaft, deren IsErrorOut Eigenschaft wahr ist. |
DirectRow(Int32) |
Sendet eine Zeile aus PipelineBuffer an die angegebene IDTSOutput100. |
Dispose() |
Gibt alle vom PipelineBuffer verwendeten Ressourcen frei. |
Dispose(Boolean) |
Gibt die von PipelineBuffer verwendeten, nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. |
Finalize() |
Gibt alle vom PipelineBuffer verwendeten Ressourcen frei. |
GetBlobData(Int32, Int32, Int32) |
Ruft ein Bytearray aus einem in einer PipelineBuffer-Spalte gespeicherten BLOB (Binary Large Object) ab. |
GetBlobLength(Int32) |
Ruft die Anzahl der in BLOB-Daten (Binary Large Object) einer PipelineBuffer-Spalte enthaltenen Bytes ab. |
GetBoolean(Int32) |
Ruft den bool-Wert ab, der in der PipelineBuffer Spalte gespeichert ist. |
GetByte(Int32) |
Ruft den in der PipelineBuffer Spalte gespeicherten Bytewert ab. |
GetBytes(Int32) |
Ruft das in einer Pufferspalte gespeicherte Bytearray ab. |
GetColumnInfo(Int32) |
Ruft die BufferColumn-Struktur für eine PipelineBuffer-Spalte ab. |
GetDate(Int32) |
Ruft den in der PipelineBuffer Spalte gespeicherten DateTime-Wert ab. |
GetDateTime(Int32) |
Ruft den in der PipelineBuffer Spalte gespeicherten DateTime-Wert ab. |
GetDateTimeOffset(Int32) |
Ruft den in der PipelineBuffer Spalte gespeicherten DateTimeOffset-Wert ab. |
GetDecimal(Int32) |
Ruft den dezimalen Wert ab, der in der PipelineBuffer Spalte gespeichert ist. |
GetDouble(Int32) |
Ruft das Doppelte ab, das in der PipelineBuffer Spalte gespeichert ist. |
GetGuid(Int32) |
Ruft den guid-Wert ab, der in der PipelineBuffer Spalte gespeichert ist. |
GetInt16(Int32) |
Ruft die in der PipelineBuffer Spalte gespeicherte Kurze ab. |
GetInt32(Int32) |
Ruft das in einer PipelineBuffer Spalte gespeicherte Int ab. |
GetInt64(Int32) |
Ruft die lange, die in der PipelineBuffer Spalte gespeichert ist. |
GetSByte(Int32) |
Ruft den in einer PipelineBuffer Spalte gespeicherten SByte-Wert ab. |
GetSingle(Int32) |
Ruft den in einer PipelineBuffer-Spalte gespeicherten Gleitkommawert ab. |
GetString(Int32) |
Ruft die in der Pufferspalte gespeicherte Zeichenfolge ab. |
GetTime(Int32) |
Ruft den in der PipelineBuffer Spalte gespeicherten TimeSpan-Wert ab. |
GetUInt16(Int32) |
Ruft den in der Pufferspalte gespeicherten Ushort-Wert ab. |
GetUInt32(Int32) |
Ruft den in der Pufferspalte gespeicherten UInt32-Wert ab. |
GetUInt64(Int32) |
Ruft den in der Pufferspalte gespeicherten Ulong-Wert ab. |
IsNull(Int32) |
Überprüft, ob die Daten in einer Pufferspalte NULL sind. |
NextRow() |
Setzt PipelineBuffer auf die nächste Zeile. |
RemoveRow() |
Entfernt die aktuelle Zeile aus PipelineBuffer. |
ResetBlobData(Int32) |
Löscht den Inhalt der angegebenen BLOB-Spalte. |
SetBoolean(Int32, Boolean) |
Weist einen Boolwert einer PipelineBuffer Spalte zu. |
SetByte(Int32, Byte) |
Weist einem Byte eine PipelineBuffer Spalte zu. |
SetBytes(Int32, Byte[]) |
Weist einer Pufferspalte ein Bytearray zu. |
SetDate(Int32, DateTime) |
Weist dem PipelineBuffer Spaltenwert einen DateTime-Wert zu. |
SetDateTime(Int32, DateTime) |
Weist dem PipelineBuffer Spaltenwert einen DateTime-Wert zu. |
SetDateTimeOffset(Int32, DateTimeOffset) |
Weist dem Spaltenwert einen DateTimeOffset-Wert zu PipelineBuffer . |
SetDecimal(Int32, Decimal) |
Weist einer Pufferspalte eine Dezimalstelle zu. |
SetDouble(Int32, Double) |
Weist eine Doppelspalte zu PipelineBuffer . |
SetEndOfRowset() |
Benachrichtigt PipelineBuffer darüber, dass dem Puffer von einer Komponente keine Zeilen mehr hinzugefügt werden. |
SetErrorInfo(Int32, Int32, Int32) |
Legt die Fehlerinformationen für die aktuelle PipelineBuffer-Zeile fest. |
SetGuid(Int32, Guid) |
Weist eine Guid einer Pufferspalte zu. |
SetInt16(Int32, Int16) |
Weist einer Pufferspalte eine 16-Bit-Ganzzahl mit Vorzeichen zu. |
SetInt32(Int32, Int32) |
Weist einer Pufferspalte eine 32-Bit-Integer mit Vorzeichen zu |
SetInt64(Int32, Int64) |
Weist einer Pufferspalte einen 64-Bit-Integer mit Vorzeichen zu |
SetNull(Int32) |
Weist null einer Pufferspalte zu. |
SetSByte(Int32, SByte) |
Weist einer Pufferspalte eine 8-Bit-Ganzzahl mit Vorzeichen zu. |
SetSingle(Int32, Single) |
Weist einer Pufferspalte einen Gleitkommawert zu. |
SetString(Int32, String) |
Weist einer Pufferspalte eine Zeichenfolge zu. |
SetTime(Int32, TimeSpan) |
Weist dem PipelineBuffer Spaltenwert einen TimeSpan-Wert zu. |
SetUInt16(Int32, UInt16) |
Weist einer Pufferspalte eine 16-Bit-Ganzzahl ohne Vorzeichen zu. |
SetUInt32(Int32, UInt32) |
Weist einer Pufferspalte eine 32-Bit-Ganzzahl ohne Vorzeichen zu |
SetUInt64(Int32, UInt64) |
Weist einer Pufferspalte einen 64-Bit-Integer ohne Vorzeichen zu |