Udostępnij za pośrednictwem


Metody wykonywania składnik przepływu danych

W czasie wykonywania zadań przepływ danych sprawdza kolejność składników, przygotowuje plan wykonać i zarządza puli wątków roboczych, które są wykonać planu pracy.Zadanie ładuje wiersze danych ze źródeł, przetwarza je do przekształcenia, a następnie zapisuje je do miejsc docelowych.

Sekwencja wykonanie metoda

Podczas wykonywania składnika przepływ danych podzbiór metod opisanych w PipelineComponent nosi nazwę klasy podstawowej. Metody i kolejność, w którym są nazywane są zawsze takie same, z wyjątkiem tych PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) i ProcessInput(Int32, PipelineBuffer) metody. Te dwie metody są nazywane na podstawie istnienia i konfiguracja jakiegoś składnika IDTSInput100 i IDTSOutput100 obiekty.

Na poniższej liście przedstawiono metody w kolejności, w jakiej są one nazywane podczas wykonywania składnika.Należy zauważyć, że PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]), gdy wywołana, zawsze jest wywoływane przed ProcessInput(Int32, PipelineBuffer).

  • AcquireConnections(Object)

  • Validate()

  • ReleaseConnections()

  • PrepareForExecute()

  • AcquireConnections(Object)

  • PreExecute()

  • PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[])

  • ProcessInput(Int32, PipelineBuffer)

  • PostExecute()

  • ReleaseConnections()

  • Cleanup()

Metoda PrimeOutput

The PrimeOutput(Int32, Int32%, IDTSBuffer100%) metoda is called when a component has at least one output, attached to a downstream component through an IDTSPath100 object, and the SynchronousInputID() właściwość of the output is zero. The PrimeOutput(Int32, Int32%, IDTSBuffer100%) metoda is called for urządzenie źródłowe components and for transformations with asynchronous outputs. W odróżnieniu od ProcessInput(Int32, PipelineBuffer) metody opisanej poniżej, PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) gdy dla każdego składnika, który wymaga tylko wywoływana jest metoda.

Metoda ProcessInput

The ProcessInput(Int32, IDTSBuffer100) metoda is called for components that have at least one input attached to an upstream component by an IDTSPath100 object. The ProcessInput(Int32, IDTSBuffer100) method is called for destination components and for transformations with synchronous outputs.ProcessInput(Int32, PipelineBuffer) is called repeatedly until there are no more rows to process from upstream components.

Praca z wejściowych i wyjścia

Przy uruchomieniu czas, składniki przepływ danych wykonywać następujące zadania:

  • Składniki urządzenie źródłowe dodawać wiersze.

  • Składniki transformacja z synchronicznej wyjść otrzymywać udostępniane przez składniki urządzenie źródłowe wierszy.

  • Składniki transformacja z asynchronicznego wyjść odbierać wierszy i dodawać wiersze.

  • Elementy docelowe odbierają wierszy i następnie załadować je do obiekt docelowy.

Podczas wykonywania zadanie przepływ danych przydziela PipelineBuffer obiekty, które zawierają wszystkie kolumna zdefiniowane w kolekcji kolumn wyjściowych kolejności składników. Na przykład jeśli doda każdej z czterech składników w kolejności od przepływ danych wyjściowych jednej kolumna do swojej kolekcja kolumn wyjściowych, buforu, który znajduje się na każdej części zawiera cztery kolumna, dla każdej kolumna danych wyjściowych na części.Ze względu na to zachowanie składnik czasami odbiera bufory zawierające kolumny nie są używane.

Ponieważ bufor odebranych przez składnik może zawierać kolumna, które nie będzie używać ten składnik, musisz zlokalizować kolumna, które mają być używane w kolekcjach kolumna wejściowe i wyjściowe sieci składnika w buforze dostarczanych przez składnik zadanie przepływ danych.Można to zrobić za pomocą FindColumnByLineageID(Int32, Int32) Metoda BufferManager() Właściwość. Ze względu na wydajność, zadanie to jest zwykle wykonywane podczas PreExecute() Metoda, a nie w PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) lub ProcessInput(Int32, PipelineBuffer).

PreExecute() jest wywoływane przed PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) i ProcessInput(Int32, PipelineBuffer) metody, i jest pierwszym szansy sprzedaży dla składnika, aby wykonać tę pracę po BufferManager() staje się dostępna dla składnika. Podczas tej metoda składnika należy zlokalizować jego kolumn w buforach i te informacje są przechowywane wewnętrznie tak aby można było używać kolumn w jednej PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) lub ProcessInput(Int32, PipelineBuffer) metoda.

Poniższy przykład kodu demonstruje, jak składnik transformacja z synchronicznej danych wyjściowych lokalizuje jej kolumn danych wejściowych w buforze ciągu PreExecute().

private 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++)
    {
        IDTSInputColumn100 column = input.InputColumnCollection[x];
        bufferColumnIndex[x] = BufferManager.FindColumnByLineageID( input.Buffer, column.LineageID);
    }
}
Dim bufferColumnIndex As Integer()

    Public Overrides Sub PreExecute()

        Dim input As IDTSInput100 = ComponentMetaData.InputCollection(0)

        ReDim bufferColumnIndex(input.InputColumnCollection.Count)

        For x As Integer = 0 To input.InputColumnCollection.Count

            Dim column As IDTSInputColumn100 = input.InputColumnCollection(x)
            bufferColumnIndex(x) = BufferManager.FindColumnByLineageID(input.Buffer, column.LineageID)

        Next

    End Sub

Dodawanie wierszy

Składniki dostarczania wierszy do niższego rzędu składników przez dodanie wierszy, które mają zostać PipelineBuffer obiekty. zadanie przepływ danych Zawiera tablicę buforów wyjściowych — jeden dla każdego IDTSOutput100 obiekt, który jest połączony ze składnikiem niższego rzędu - jako parametr PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda. urządzenie źródłowe składniki i składniki transformacja z asynchronicznego wyjść dodawać wiersze do buforów i wywołanie SetEndOfRowset() Metoda, gdy są one gotowe, dodawanie wierszy. zadanie przepływ danych Zarządza buforów danych wyjściowych, dostarczający składników i bufor staje się pełne, automatycznie przenoszony do następnego składnika wierszy w buforze.The PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) metoda is called one czas per component, unlike the ProcessInput(Int32, PipelineBuffer) metoda, which is called repeatedly.

W poniższym przykładzie kodu pokazano, jak składnik dodaje wierszy do swoich buforów danych wyjściowych podczas PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda, wywołuje SetEndOfRowset() Metoda.

public override void PrimeOutput( int outputs, int []outputIDs,PipelineBuffer []buffers)
{
    for( int x=0; x < outputs; x++ )
    {
        IDTSOutput100 output = ComponentMetaData.OutputCollection.GetObjectByID( outputIDs[x]);
        PipelineBuffer buffer = buffers[x];

        // TODO: Add rows to the output buffer.
    }
    foreach( PipelineBuffer buffer in buffers )
    {
        /// Notify the data flow task that no more rows are coming.
        buffer.SetEndOfRowset();
    }
}
public overrides sub PrimeOutput( outputs as Integer , outputIDs() as Integer ,buffers() as PipelineBuffer buffers)

    For x As Integer = 0 To outputs.MaxValue

        Dim output As IDTSOutput100 = ComponentMetaData.OutputCollection.GetObjectByID(outputIDs(x))
        Dim buffer As PipelineBuffer = buffers(x)

        ' TODO: Add rows to the output buffer.

    Next

    For Each buffer As PipelineBuffer In buffers

        ' Notify the data flow task that no more rows are coming.
        buffer.SetEndOfRowset()

    Next

End Sub

Aby uzyskać więcej informacji na temat projektowania składników, dodawać wiersze do wyprowadzenia bufory zobacz Developing a Custom Source Component i Rozwijanie składnik transformacja niestandardowe z asynchronicznych wyjścia.

Odbieranie wiersze

Składniki odbierać wierszy z "pod prąd" składników PipelineBuffer obiekty. zadanie przepływ danych Zawiera PipelineBuffer obiekt, który zawiera wiersze, dodawane do przepływ danych przez składniki "pod prąd" jako parametr ProcessInput(Int32, PipelineBuffer) Metoda. Ten bufor wejściowy może służyć do zbadania i modyfikowanie wierszy i kolumn w buforze, ale nie można używać do dodawania lub usuwania wierszy.The ProcessInput(Int32, PipelineBuffer) metoda is called repeatedly until there are no more available buffers. Ostatnia czas jest on nazywany EndOfRowset() Właściwość jest true. Przejść przez zbiór wierszy w buforze przy użyciu NextRow() Metoda, która przechodzi do buforu do następnego wiersza. Metoda zwraca false kiedy bufor jest w ostatnim wierszu w kolekcja. Nie trzeba sprawdzić EndOfRowset() Właściwość nie jest zainstalowany w celu wykonania dodatkowych czynności po ostatnim wiersze danych zostały przetworzone.

Następujący tekst przedstawia prawidłowy deseń przy użyciu NextRow() Metoda oraz EndOfRowset() Właściwość:

Podczas (buffer.NextRow())

{

/ / Zrób coś w każdym wierszu.

}

Jeśli (buffer.EndOfRowset)

{

/ / Opcjonalnie wykonaj coś po przetworzeniu wszystkich wierszy.

}

Poniższy przykład kodu ilustruje sposób składnik przetwarzania wierszy w danych wejściowych buforów podczas ProcessInput(Int32, PipelineBuffer) Metoda.

public override void ProcessInput( int inputID, PipelineBuffer buffer )
{
    {
        IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);
        while( buffer.NextRow())
        {
            // TODO: Examine the columns in the current row.
        }
}
Public Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer)

        Dim input As IDTSInput100 = ComponentMetaData.InputCollection.GetObjectByID(inputID)
        While buffer.NextRow() = True

            ' TODO: Examine the columns in the current row.
        End While

End Sub

Aby uzyskać więcej informacji na temat projektowania składników, które otrzymują wierszy w buforów danych wejściowych Zobacz Rozwijanie niestandardowe obiekt obiekt docelowy składnika i Rozwijanie składnik transformacja niestandardowe z synchroniczne wyjścia.

Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.