PipelineBuffer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce uno store dati in memoria contenente righe e colonne di dati.
public ref class PipelineBuffer : IDisposable
public class PipelineBuffer : IDisposable
type PipelineBuffer = class
interface IDisposable
Public Class PipelineBuffer
Implements IDisposable
- Ereditarietà
-
PipelineBuffer
- Implementazioni
Esempio
L'esempio seguente mostra una componente di trasformazione che itera le righe e le colonne di un 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.
}
}
}
}
}
L'esempio seguente mostra un componente sorgente che aggiunge righe al buffer di uscita 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();
}
}
}
Commenti
Il PipelineBuffer è un archivio dati bidimensionale in memoria contenente righe e colonne. Viene creato dal compito di flusso dati e fornito ai componenti del flusso dati gestiti durante l'esecuzione. Le colonne contenute in un buffer si basano sulle colonne nelle IDTSOutputColumnCollection100 collezioni dei componenti nel grafo.
I componenti sorgente e quelli con uscite asincrone ricevono un buffer per ciascun degli oggetti di uscita collegati a un componente downstream. Questi buffer sono chiamati buffer di uscita e non contengono righe. Il componente che riceve il buffer di output aggiunge righe al buffer e chiama il SetEndOfRowset metodo una volta terminato. Questo metodo stabilisce il valore della EndOfRowset proprietà a true sul buffer finale. Il compito di flusso dati fornisce quindi quel buffer al componente successivo del grafo.
I componenti di trasformazione con output sincroni e componenti di destinazione ricevono PipelineBuffer oggetti nel ProcessInput metodo. Il PipelineBuffer ricevito in questo metodo è un Input buffer e contiene le righe aggiunte dai componenti a monte. Questo buffer è limitato e non può essere usato per aggiungere o rimuovere righe dal buffer.
È PipelineBuffer scritto in codice gestito e supporta gli sviluppatori di componenti del flusso dati gestito coordinando i dati tra il codice gestito e l'oggetto COM sottostante IDTSBuffer100 .
Per un elenco completo dei tipi di dati di Integration Services e i relativi metodi e metodi della PipelineBuffer classe da utilizzare con ciascun tipo di dato, vedi Lavorare con i tipi di dati nel Flusso di dati.SetGet
Costruttori
| Nome | Descrizione |
|---|---|
| PipelineBuffer(IntPtr, PipelineBufferMode) |
Istanzia una nuova istanza del PipelineBuffer. |
| PipelineBuffer(UInt32, UInt32, UInt64, IntPtr*, DTP_BUFFCOL*, Boolean) |
Inizializza una nuova istanza della classe PipelineBuffer. |
Proprietà
| Nome | Descrizione |
|---|---|
| ColumnCount |
Ottiene il numero di colonne nel PipelineBuffer. |
| ColumnInfo |
Riceve i metadati di sola lettura sulla colonna. |
| CurrentRow |
Ottiene l'indice della riga corrente nel PipelineBuffer. |
| EndOfRowset |
Ottiene un valore che indica se la corrente PipelineBuffer è il buffer finale. |
| Item[Int32] |
Valore della colonna specificata nella riga corrente |
| Mode |
Ottiene un valore che indica se a PipelineBuffer è un IDTSInput100 buffer o un IDTSOutput100 buffer. |
| RowCount |
Ottiene il numero di righe nell'oggetto PipelineBuffer . |
| RowSize |
Ottiene la dimensione della riga nell'oggetto PipelineBuffer . |
| RowStarts |
Ottiene il punto di partenza della fila. |
Metodi
| Nome | Descrizione |
|---|---|
| AddBlobData(Int32, Byte[], Int32) |
Aggiunge un array di un numero specificato di byte a una PipelineBuffer colonna. |
| AddBlobData(Int32, Byte[]) |
Aggiunge un array di byte a una PipelineBuffer colonna. |
| AddRow() |
Aggiunge una riga all'oggetto PipelineBuffer . |
| DirectErrorRow(Int32, Int32, Int32, Int32) |
Invia una PipelineBuffer riga a un IDTSOutput100 la cui IsErrorOut proprietà è vera. |
| DirectErrorRow(Int32, Int32, Int32) |
Invia una PipelineBuffer riga a un IDTSOutput100 la cui IsErrorOut proprietà è vera. |
| DirectRow(Int32) |
Invia una riga da a PipelineBuffer a al specificato IDTSOutput100. |
| Dispose() |
Rilascia tutte le risorse usate dal PipelineBuffer. |
| Dispose(Boolean) |
Rilascia le risorse non gestite utilizzate dal PipelineBuffer, e opzionalmente rilascia le risorse gestite. |
| Finalize() |
Rilascia tutte le risorse usate dal PipelineBuffer. |
| GetBlobData(Int32, Int32, Int32) |
Recupera un array di byte da un oggetto binario grande (BLOB) memorizzato in una PipelineBuffer colonna. |
| GetBlobLength(Int32) |
Ottiene il numero di byte contenuti in una colonna binaria di grande oggetto (BLOB PipelineBuffer ). |
| GetBoolean(Int32) |
Ottiene il valore bool memorizzato nella PipelineBuffer colonna. |
| GetByte(Int32) |
Ottiene il valore del byte memorizzato nella PipelineBuffer colonna. |
| GetBytes(Int32) |
Ottiene l'array di byte memorizzati in una colonna buffer. |
| GetColumnInfo(Int32) |
Recupera la BufferColumn struttura di una PipelineBuffer colonna. |
| GetDate(Int32) |
Ottiene il valore DateTime memorizzato nella PipelineBuffer colonna. |
| GetDateTime(Int32) |
Ottiene il valore DateTime memorizzato nella PipelineBuffer colonna. |
| GetDateTimeOffset(Int32) |
Ottiene il valore DateTimeOffset memorizzato nella PipelineBuffer colonna. |
| GetDecimal(Int32) |
Ottiene il valore decimale memorizzato nella PipelineBuffer colonna. |
| GetDouble(Int32) |
Così il doppio viene memorizzato nella PipelineBuffer colonna. |
| GetGuid(Int32) |
Ottiene il valore Guid memorizzato nella PipelineBuffer colonna. |
| GetInt16(Int32) |
Così il cortocircuito viene archiviato nella PipelineBuffer colonna. |
| GetInt32(Int32) |
Ottiene l'intelligenza memorizzata in una PipelineBuffer colonna. |
| GetInt64(Int32) |
Mette il lungo nella PipelineBuffer colonna. |
| GetSByte(Int32) |
Ottiene il valore SByte memorizzato in una PipelineBuffer colonna. |
| GetSingle(Int32) |
Così il galleggiante viene memorizzato in una PipelineBuffer colonna. |
| GetString(Int32) |
Così la stringa viene memorizzata nella colonna buffer. |
| GetTime(Int32) |
Ottiene il valore TimeSpan memorizzato nella PipelineBuffer colonna. |
| GetUInt16(Int32) |
Ottiene il valore ushort memorizzato nella colonna del buffer. |
| GetUInt32(Int32) |
Ottiene il valore UInt32 memorizzato nella colonna del buffer. |
| GetUInt64(Int32) |
Ottiene il valore ulong memorizzato nella colonna del buffer. |
| IsNull(Int32) |
Controlla se i dati in una colonna del buffer sono nulli. |
| NextRow() |
Avanza alla PipelineBuffer fila successiva. |
| RemoveRow() |
Rimuove la riga corrente dal PipelineBuffer. |
| ResetBlobData(Int32) |
Elimina il contenuto della colonna BLOB specificata. |
| SetBoolean(Int32, Boolean) |
Assegna un valore bool a una PipelineBuffer colonna. |
| SetByte(Int32, Byte) |
Assegna un byte a una PipelineBuffer colonna. |
| SetBytes(Int32, Byte[]) |
Assegna un array di byte a una colonna buffer. |
| SetDate(Int32, DateTime) |
Assegna un valore DateTime alla PipelineBuffer colonna. |
| SetDateTime(Int32, DateTime) |
Assegna un valore DateTime alla PipelineBuffer colonna. |
| SetDateTimeOffset(Int32, DateTimeOffset) |
Assegna un valore DateTimeOffset alla PipelineBuffer colonna. |
| SetDecimal(Int32, Decimal) |
Assegna un decimale a una colonna buffer. |
| SetDouble(Int32, Double) |
Assegna un doppio a una PipelineBuffer colonna. |
| SetEndOfRowset() |
Notifica che PipelineBuffer un componente ha finito di aggiungere righe al buffer. |
| SetErrorInfo(Int32, Int32, Int32) |
Imposta le informazioni di errore per la riga corrente PipelineBuffer . |
| SetGuid(Int32, Guid) |
Assegna un Guid a una colonna buffer. |
| SetInt16(Int32, Int16) |
Assegna un intero con segno a 16 bit a una colonna buffer. |
| SetInt32(Int32, Int32) |
Assegna un intero con segno a 32 bit a una colonna buffer. |
| SetInt64(Int32, Int64) |
Assegna un intero con segno a 64 bit a una colonna buffer. |
| SetNull(Int32) |
Assegna null a una colonna buffer. |
| SetSByte(Int32, SByte) |
Assegna un intero con segno a 8 bit a una colonna buffer. |
| SetSingle(Int32, Single) |
Assegna un float a una colonna buffer. |
| SetString(Int32, String) |
Assegna una stringa a una colonna buffer. |
| SetTime(Int32, TimeSpan) |
Assegna un valore TimeSpan alla PipelineBuffer colonna. |
| SetUInt16(Int32, UInt16) |
Assegna un intero senza segno a 16 bit a una colonna buffer. |
| SetUInt32(Int32, UInt32) |
Assegna un intero non firmato a 32 bit a una colonna buffer. |
| SetUInt64(Int32, UInt64) |
Assegna un intero non firmato a 64 bit a una colonna buffer. |