Udostępnij za pośrednictwem


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