Metoda PipelineComponent.PreExecute
Wywoływana po PrepareForExecutei przed PrimeOutput i ProcessInput.
Przestrzeń nazw: Microsoft.SqlServer.Dts.Pipeline
Zestaw: Microsoft.SqlServer.PipelineHost (w Microsoft.SqlServer.PipelineHost.dll)
Składnia
'Deklaracja
Public Overridable Sub PreExecute
'Użycie
Dim instance As PipelineComponent
instance.PreExecute()
public virtual void PreExecute()
public:
virtual void PreExecute()
abstract PreExecute : unit -> unit
override PreExecute : unit -> unit
public function PreExecute()
Uwagi
Deweloperzy składników powinny współczynnika jak najwięcej funkcji do PreExecute jak to możliwe, ponieważ jest ona wywoływana jeden czas na składnik zamiast jednego czas na bufor dla ProcessInput.Składniki należy zlokalizować indeksów kolumn wejściowych i wyjściowych w PipelineBuffer przez wywołanie FindColumnByLineageID metoda BufferManager.
Przykłady
Poniższy przykład ilustruje sposób zlokalizować indeksy kolumna kolumn w InputColumnCollection.Są one przechowywane w zmiennej lokalnej i następnie używane w ProcessInput kolumn w dostęp do PipelineBuffer.
int[] bufferColumnIndex;
public override void PreExecute()
{
IDTSInput100 input = ComponentMetaData.InputCollection[0];
bufferColumnIndex = new int[input.InputColumnCollection.Count];
for ( int x=0; x < input.InputColumnCollection.Count; x++)
{
bufferColumnIndex[x] = BufferManager.FindColumnByLineageID( input.Buffer, input.InputColumnCollection[x].LineageID);
}
}
public override void ProcessInput( int inputID, PipelineBuffer buffer )
{
while( buffer.NextRow() )
{
for( int x=0; x < bufferColumnIndex.Length(); x++ )
{
if( !buffer.IsNull(bufferColumnIndex[x]))
{
// TODO: Access the column data.
}
}
}
}
Private bufferColumnIndex As Integer()
Public Overrides Sub PreExecute()
Dim input As IDTSInput100 = ComponentMetaData.InputCollection(0)
bufferColumnIndex = New Integer(input.InputColumnCollection.Count - 1) {}
Dim x As Integer = 0
While x < input.InputColumnCollection.Count
bufferColumnIndex(x) = BufferManager.FindColumnByLineageID(input.Buffer, input.InputColumnCollection(x).LineageID)
x -= 1
End While
End Sub
Public Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer)
While buffer.NextRow
Dim x As Integer = 0
While x < bufferColumnIndex.Length
If Not buffer.IsNull(bufferColumnIndex(x)) Then
End If
x -= 1
End While
End While
End Sub