Run -saat yöntemleri bir veri akışı bileşen

Çalışma sırasında saat, veri akışı görevi bileşenleri dizisini inceler, yürütmek planı hazırlar ve iş planı yürütmek alt iş parçacığı havuzu yönetir.Görev kaynaklardan veri satırları yükler, dönüştürmeleri işler ve bunları hedeflere kaydeder.

Yöntem yürütme sırası

alt küme küme küme kümesini yöntemleri bir veri akışı bileşeni yürütülmesi sırasında PipelineComponent temel sınıf olarak adlandırılan.Yöntemleri ve içinde bunlar verilir, sıra her zaman aynı dışında olan PrimeOutput ve ProcessInput yöntemleri.Bu iki yöntem üzerinde varlığı göre adlandırılır ve yapılandırma bir bileşenin, IDTSInput100 ve IDTSOutput100 nesneler.

Aşağıdaki listede yöntemleri bileşen yürütme sırasında adlı gösterir.Dikkat PrimeOutput, çağrıldığında, her zaman önce adlı ProcessInput.

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.AcquireConnections(System.Object) ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.Validate ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.ReleaseConnections ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.PrepareForExecute ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.AcquireConnections(System.Object) ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.PreExecute ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.PrimeOutput(System.Int32,System.Int32[],Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer[]) ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.ProcessInput(System.Int32,Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer) ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.PostExecute ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.ReleaseConnections ]

  • [ M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.Cleanup ]

PrimeOutput yöntemi

The PrimeOutput method is called when a component has at least one output, attached to a downstream component through an IDTSPath100 object, and the SynchronousInputID property of the output is zero.The PrimeOutput method is called for source components and for transformations with asynchronous outputs.Aksine ProcessInput , aşağıda açıklanan yöntem PrimeOutput yöntem yalnızca adlı bir kez her bileşen için gerektiren it.

ProcessInput yöntemi

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

Girişleri ve çıkışları ile çalışma

Çalışma sırasında saat, veri akışı bileşenleri aşağıdaki görevleri gerçekleştirin:

  • Kaynak Bileşen satırları ekleyin.

  • Zaman uyumlu çıkışlarına dönüşümü bileşenlerle satır kaynak bileşenleri tarafından sağlanan alırsınız.

  • Zaman uyumsuz çıkışlarına dönüşümü bileşenlerle satır almak ve satırları ekleyin.

  • Hedef bileşenleri satır almak ve bunları hedef yükleyin.

Yürütme sırasında veri akışı görevi ayırır PipelineBuffer içeren tüm nesnelerin sütuntanımlanan çıkışı s sütun koleksiyonu, bir dizi bileşen.Örneğin, her ise dört bileşen bir veri akışı sıra bir çıktı sütununun çıktı sütun koleksiyonuna ekler, her bileşen için sağlanan arabellek her çıktı sütununa bileşen başına dört sütun içerir.Bu davranış nedeniyle, bir bileşen kullanmak sütunları içeren arabellekleri bazen alır.

Yaptığınız bileşen tarafından alınan arabellekler içerebilir bu yana sütunbileşenini kullanan s gerekir bulun sütunbileşeninizin içinde kullanmak istediğiniz s giriş ve çıkış sütun bileşeni için veri akışı görevi tarafından sağlanan arabelleği Koleksiyonlar.Kullanarak bunu FindColumnByLineageID yöntem, BufferManager özellik.Performansla ilgili nedenlerden dolayı bu görevi normalde sırasında gerçekleştirilen PreExecute yöntem, yerine de PrimeOutput veya ProcessInput.

PreExecuteönce adı verilen PrimeOutput ve ProcessInput yöntemleri, ve sonra bu çalışmayı gerçekleştirmek bir bileşen için ilk fırsat BufferManager kullanılabilir bileşen.Bu yöntem sırasında bileşen sütunlarını arabelleklerinde bulun ve sütunları ya da kullanılabilmesi için bu bilgileri dahili olarak saklamak PrimeOutput veya ProcessInput yöntemleri.

Aşağıdaki kod örneği, nasıl dönüştürme bileşeni ile zaman uyumlu çıktı arabelleğindeki sırasında kendi giriş sütunları bulur gösterir 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

Satır ekleme

Bileşenleri tedarik satır aşağı akım bileşenleri için satır ekleyerek PipelineBuffer nesneler.veri akışı görevi çıktı arabelleği - her bir dizi sağlar IDTSOutput100 bir parametre olarak bir aşağı akım bileşeni - bağlı nesne PrimeOutput yöntem.Kaynak bileşenleri ve zaman uyumsuz çıkışlarına dönüştürme bileşenlerle satır arabellekleri ve Ekle çağrısı için SetEndOfRowset bitmiş ekleme satırları olduklarında yöntemveri akışı görevi için bileşenleri sağlar ve, bir arabellek edilince tam, otomatik olarak bir arabellek satırları sonraki bileşene taşır çıktı arabelleği yönetir.The PrimeOutput method is called one time per component, unlike the ProcessInput method, which is called repeatedly.

Aşağıdaki kod örneği, nasıl bir bileşen satırları sırasında kendi çıktı arabelleği ekler gösterir PrimeOutput sonra yöntem çağırarak SetEndOfRowset yöntem.

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

Çıkış arabelleği için satır ekleme bileşenler geliştirme hakkında daha fazla bilgi için bkz: Özel kaynak Bileşen geliştirme ve Bir zaman uyumsuz çıkışlarına ile özel dönüşümü Bileşen geliştirme.

Satırları alma

Bileşenleri ters yönde bileşenlerinden satırları almak PipelineBuffer nesneler.veri akışı görevi sağlar bir PipelineBuffer veri akışı için bir parametre olarak ters yönde bileşenleri tarafından eklenen satırlar içeren nesne ProcessInput yöntem.Bu giriş arabelleği incelemek ve satır ve sütunları arabellekte değiştirmek için kullanılan, ancak satırları kaldırmak veya eklemek için kullanılamaz.The ProcessInput method is called repeatedly until there are no more available buffers.Son saat denir, EndOfRowset özellik true.Üzerinden yinelemek yapabilirsiniz koleksiyon kullanarak arabelleğindeki satır NextRow yöntem, ilerletir arabelleğe sonraki satır.Bu yöntem döndürür false arabellek olduğunda son satırdaki koleksiyon.Denetlenecek olan EndOfRowset özellik gerçekleştirmek bir ek olmadığı sürece eylem son satır verinin işlendikten sonra.

Aşağıdaki metni kullanarak için doğru deseni gösteren NextRow yöntem ve EndOfRowset özellik:

while (buffer.NextRow())

{

// Do something with each row.

}

if (buffer.EndOfRowset)

{

// Optionally, do something after all rows have been processed.

}

Aşağıdaki kod örneği sırasında giriş arabellekleri satırları bir bileşeni nasıl işlediğini gösterir ProcessInput yöntem.

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

Satır giriş arabellekleri bileşenler geliştirme hakkında daha fazla bilgi için bkz: Özel hedef Bileşen geliştirme ve Bir zaman uyumlu çıkışlarına ile özel dönüşümü Bileşen geliştirme.

Integration Services simgesi (küçük)Integration Services ile güncel kalın

En son karşıdan yüklemeler, makaleler, örnekler ve seçilen topluluk çözümleri yanı sıra Microsoft videolar için ziyaret Integration Services sayfa msdn veya TechNet:

Bu güncelleştirmelerle ilgili otomatik bildirim almak için, sayfadaki RSS akışlarına abone olun.