Connecting Data Flow Components Programmatically
Po dodaniu składników do zadanie przepływu danych, połączyć je w celu utworzenia drzewem wykonanie reprezentującą przepływ danych ze źródeł za pomocą transformacji do miejsc docelowych.Używasz IDTSPath100 obiekty, aby połączyć składniki przepływ danych.
Tworzenie ścieżka
Wywołanie New Metoda PathCollection() Właściwość MainPipe interfejs, aby utworzyć nową ścieżkę i dodać go do kolekcja ścieżka w zadanie przepływ danych. Ta metoda zwraca nowy, odłączony IDTSPath100 obiekt, który można następnie użyć do połączenia dwóch składników.
Wywołanie AttachPathAndPropagateNotifications(IDTSOutput100, IDTSInput100) Metoda łączenia ścieżka oraz powiadamianie składników biorących udział w ścieżce, że zostaną one podłączone. Metoda ta akceptuje IDTSOutput100 "pod prąd" składnika a IDTSInput100 poniżej składnika jako parametry. Domyślnie, wywołanie składnika ProvideComponentProperties() Metoda polega na pojedyncze dane wejściowe dla składników, które mają wejść i pojedynczych wyników dla składników, które ma wyjść. W poniższym przykładzie użyto te dane wyjściowe domyślnego urządzenie źródłowe i obiekt docelowy danych wejściowych.
Następny krok
Po ustanowieniu ścieżka między dwoma składnikami, następnym krokiem jest mapowanie kolumn danych wejściowych w kierunku z prądem składnika, który został omówiony w następnej sekcji, Zaznaczanie kolumny wprowadzania programowe.
Przykład
Poniższy przykład kodu pokazuje, jak ustalić ścieżka między dwoma składnikami.
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Pipeline;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package package = new Package();
Executable e = package.Executables.Add("STOCK:PipelineTask");
TaskHost thMainPipe = e as TaskHost;
MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe;
// Create the source component.
IDTSComponentMetaData100 source =
dataFlowTask.ComponentMetaDataCollection.New();
source.ComponentClassID = "DTSAdapter.OleDbSource";
CManagedComponentWrapper srcDesignTime = source.Instantiate();
srcDesignTime.ProvideComponentProperties();
// Create the destination component.
IDTSComponentMetaData100 destination =
dataFlowTask.ComponentMetaDataCollection.New();
destination.ComponentClassID = "DTSAdapter.OleDbDestination";
CManagedComponentWrapper destDesignTime = destination.Instantiate();
destDesignTime.ProvideComponentProperties();
// Create the path.
IDTSPath100 path = dataFlowTask.PathCollection.New();
path.AttachPathAndPropagateNotifications(source.OutputCollection[0],
destination.InputCollection[0]);
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Pipeline
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Module Module1
Sub Main()
Dim package As Microsoft.SqlServer.Dts.Runtime.Package = _
New Microsoft.SqlServer.Dts.Runtime.Package()
Dim e As Executable = package.Executables.Add("STOCK:PipelineTask")
Dim thMainPipe As Microsoft.SqlServer.Dts.Runtime.TaskHost = _
CType(e, Microsoft.SqlServer.Dts.Runtime.TaskHost)
Dim dataFlowTask As MainPipe = CType(thMainPipe.InnerObject, MainPipe)
' Create the source component.
Dim source As IDTSComponentMetaData100 = _
dataFlowTask.ComponentMetaDataCollection.New()
source.ComponentClassID = "DTSAdapter.OleDbSource"
Dim srcDesignTime As CManagedComponentWrapper = source.Instantiate()
srcDesignTime.ProvideComponentProperties()
' Create the destination component.
Dim destination As IDTSComponentMetaData100 = _
dataFlowTask.ComponentMetaDataCollection.New()
destination.ComponentClassID = "DTSAdapter.OleDbDestination"
Dim destDesignTime As CManagedComponentWrapper = destination.Instantiate()
destDesignTime.ProvideComponentProperties()
' Create the path.
Dim path As IDTSPath100 = dataFlowTask.PathCollection.New()
path.AttachPathAndPropagateNotifications(source.OutputCollection(0), _
destination.InputCollection(0))
End Sub
End Module
|