Udostępnij za pośrednictwem


Dodawanie danych przepływu składniki programowe

Podczas tworzenia przepływ danych należy rozpocząć od Dodawanie składników.Następnie można skonfigurować te składniki i łączenia ich ze sobą ustanowienie przepływu danych przy uruchomieniu czas.W tej sekcji opisano, dodając składnik, który ma być zadanie przepływ danych, tworzenie instancji czas projektowania składnika, a następnie Konfigurowanie składnika.Aby uzyskać informacje na temat łączenia składników, zobacz temat Connecting Data Flow Components Programmatically.

Dodawanie składnika

Wywołanie New() Metoda ComponentMetaDataCollection() kolekcji, aby utworzyć nowy składnik i dodać go do zadanie przepływ danych. Metoda zwraca IDTSComponentMetaData100 Interfejs składnika. Jednak w tym miejscu IDTSComponentMetaData100 Zawiera informacje specyficzne dla każdego z jednego składnika. zestaw ComponentClassID() Właściwość, aby określić typ składnika. Zadania przepływ danych używa wartości tej właściwość do utworzenia wystąpienie składnika przy uruchomieniu czas.

Wartość określona w ComponentClassID() Właściwość może być identyfikator CLSID, PROGID, lub CreationName() Właściwość składnika. Identyfikator klasy jest zwykle wyświetlany w oknie dialogowym właściwości jako wartość składnika ComponentClassID() Właściwość. Aby uzyskać więcej informacji na temat tej właściwość i inne właściwość dostępnych składników zobacz Odkrywanie programowe składniki przepływ danych.

Dodawanie składnika zarządzany

Identyfikator klasy lub PROGID nie można użyć aby dodać jeden składników zarządzanych danych przepływu dla przepływ danych, ponieważ te wartości wskazują otoką, a nie sam składnik.Zamiast tego można użyć CreationName Właściwość lub AssemblyQualifiedName właściwości, jak pokazano w następującym przykładzie.

Jeśli zamierzasz używać AssemblyQualifiedName Właściwość, a następnie użytkownik musi dodać odwołanie w sieci Visual Studio Projekt, do wirtualny plik dziennika, zawierającej zarządzaną składnika. Zestawy te nie są wymienione na karcie .NET Dodaj odwołanie -okno dialogowe.Zwykle przeglądania musi zlokalizować w zestawie C:\Program Files\Microsoft SQL Server\100\DTS\PipelineComponents folder.

Składniki przepływ danych zarządzanych wbudowanych obejmują:

  • ADO.NET Źródło

  • urządzenie źródłowe XML

  • obiekt docelowy element obiekt obiekt DataReader

  • SQL Server obiekt obiekt docelowy kompaktowy

  • Składnik skryptów

Poniższy przykład kodu ilustruje oba sposoby dodawania zarządzanym składniku do przepływ danych:

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)
    {
      Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package();
      Executable e = package.Executables.Add("STOCK:PipelineTask");
      Microsoft.SqlServer.Dts.Runtime.TaskHost thMainPipe = (Microsoft.SqlServer.Dts.Runtime.TaskHost)e;
      MainPipe dataFlowTask = (MainPipe)thMainPipe.InnerObject;

      // The Application object will be used to obtain the CreationName
      //  of a PipelineComponentInfo from its PipelineComponentInfos collection.
      Application app = new Application();

      // Add a first ADO NET source to the data flow.
      //  The CreationName property requires an Application instance.
      IDTSComponentMetaData100 component1 = dataFlowTask.ComponentMetaDataCollection.New();
      component1.Name = "DataReader Source";
      component1.ComponentClassID = app.PipelineComponentInfos["DataReader Source"].CreationName;

      // Add a second ADO NET source to the data flow.
      //  The AssemblyQualifiedName property requires a reference to the assembly.
      IDTSComponentMetaData100 component2 = dataFlowTask.ComponentMetaDataCollection.New();
      component2.Name = "DataReader Source";
      component2.ComponentClassID = typeof(Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter).AssemblyQualifiedName;
    }
  }
}
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)

    ' The Application object will be used to obtain the CreationName
    '  of a PipelineComponentInfo from its PipelineComponentInfos collection.
    Dim app As New Application()

    ' Add a first ADO NET source to the data flow.
    '  The CreationName property requires an Application instance.
    Dim component1 As IDTSComponentMetaData100 = _
      dataFlowTask.ComponentMetaDataCollection.New()
    component1.Name = "DataReader Source"
    component1.ComponentClassID = app.PipelineComponentInfos("DataReader Source").CreationName

    ' Add a second ADO NET source to the data flow.
    '  The AssemblyQualifiedName property requires a reference to the assembly.
    Dim component2 As IDTSComponentMetaData100 = _
      dataFlowTask.ComponentMetaDataCollection.New()
    component2.Name = "DataReader Source"
    component2.ComponentClassID = _
      GetType(Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter).AssemblyQualifiedName

  End Sub

End Module

Tworzenie projektu-czas wystąpienie składnika

Wywołanie Instantiate() Metoda, aby utworzyć wystąpienie projektu czas składnik identyfikowany przez ComponentClassID() Właściwość. Metoda zwraca CManagedComponentWrapper obiekt, który jest otoka zarządzana dla IDTSDesigntimeComponent100 interfejs.

Jeśli to możliwe, należy zmodyfikować składnik przy użyciu metody wystąpienie czas projektowania, a nie bezpośrednio zmieniając metadane składnika.Chociaż znajdują się elementy metadane, które należy ustawić bezpośrednio, takie jak połączenia, zwykle jest wskazane bezpośrednio modyfikować metadane, ponieważ ominięcie możliwości składnika do monitorowania i sprawdzić poprawność zmian.

Przypisywanie połączenia

Niektóre składniki, takie jak składnik OLE DB urządzenie źródłowe wymagają połączenia z danymi zewnętrznymi i użyć istniejącego ConnectionManager obiekt w pakiecie do tego celu. The Count() właściwość of the RuntimeConnectionCollection() kolekcja indicates the number of run-czas ConnectionManager objects required by the component. Jeśli liczba jest większa niż zero, ten składnik wymaga połączenia.Przypisywanie Menedżer połączeń z pakiet do składnika, określając ConnectionManager() i Name() właściwości połączenia pierwszej RuntimeConnectionCollection(). Note that the name of the connection manager in the run-time connection collection must match the name of the connection managerreferenced from the package.

Ustawienie wartości właściwości niestandardowych

Po utworzeniu czas projektowania wystąpienie składnika, należy wywołać ProvideComponentProperties() Metoda. Ta metoda jest podobna do konstruktora, ponieważ konsument inicjuje nowo utworzony składnik przez utworzenie jego właściwości niestandardowe i jej obiektów danych wejściowych i wyjściowych.Nie wywołuj ProvideComponentProperties() więcej niż jeden czas składnika, ponieważ składnik może zresetowanie i utracić wszelkie modyfikacje wprowadzone poprzednio do jego metadane.

The CustomPropertyCollection() of the component contains a kolekcja of IDTSCustomProperty100 objects specific to the component. W przeciwieństwie do innych modeli programowania, w którym właściwość obiektu są zawsze widoczne na obiekcie, składniki tylko wypełniać swoje kolekcje właściwość niestandardowych podczas wywoływania ProvideComponentProperties() Metoda. Po wywołaniu metoda, za pomocą SetComponentProperty(String, Object) metoda instancji czas projektowania, aby przypisać wartości do jego właściwości niestandardowe składnika. Metoda ta akceptuje pary nazwa/wartość, która identyfikuje właściwość niestandardowych i zapewnia jego nowej wartości.

Inicjowanie kolumny wyjściowe

Po dodaniu składnika do zadania i jest skonfigurowana, zainicjować kolekcja kolumn IDTSOutput100 obiektu. Ten krok jest szczególnie istotne dla składników urządzenie źródłowe, ale nie może zainicjować kolumn dla składników transformacja i obiekt obiekt docelowy, ponieważ są zazwyczaj zależą kolumny, które będą otrzymywać od składników "pod prąd".

Wywołanie ReinitializeMetaData() Metoda zainicjować kolumn wyjściowych składnika urządzenie źródłowe. Ponieważ składniki nie automatycznie łącz z zewnętrznymi źródłami danych, wywołać AcquireConnections(Object) Metoda przed telefonicznej ReinitializeMetaData() Aby zapewnić dostęp składnika do urządzenie źródłowe danych zewnętrznych i możliwość wypełniania jego metadane kolumna. Wreszcie, wywołanie ReleaseConnections() Metoda Zwolnij połączenie.

Następny krok

Po zakończeniu dodawania i konfigurowania składnika, następnym krokiem jest utworzenie ścieżka między składnikami, które omówiono w temacie Tworzenie ścieżka między dwoma składników.

Przykład

Poniższy przykładowy kod dodaje składnik źródeł OLE DB z zadaniem przepływ danych, tworzy wystąpienie składnika czas projektowania i konfiguruje właściwości składnika.W tym przykładzie wymaga dodatkowych odwołanie do wirtualny plik dziennika Microsoft.SqlServer.DTSRuntimeWrap.

using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using Microsoft.SqlServer.Dts.Pipeline;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

namespace Microsoft.SqlServer.Dts.Samples
{
  class Program
  {
    static void Main(string[] args)
    {
      Runtime.Package package = new Runtime.Package();
      Executable e = package.Executables.Add("STOCK:PipelineTask");
      Runtime.TaskHost thMainPipe = e as Runtime.TaskHost;
      MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe;
      
      // Add an OLEDB connection manager to the package.
      ConnectionManager cm = package.Connections.Add("OLEDB");
      cm.Name = "OLEDB ConnectionManager";
      cm.ConnectionString = "Data Source=(local);" + 
        "Initial Catalog=AdventureWorks;Provider=SQLOLEDB.1;" + 
        "Integrated Security=SSPI;"
      
      // Add an OLE DB source to the data flow.
      IDTSComponentMetaData100 component = 
        dataFlowTask.ComponentMetaDataCollection.New();
      component.Name = "OLEDBSource";
      component.ComponentClassID = "DTSAdapter.OleDbSource.1";
      // You can also use the CLSID of the component instead of the PROGID.
      //component.ComponentClassID = "{2C0A8BE5-1EDC-4353-A0EF-B778599C65A0}";

      // Get the design time instance of the component.
      CManagedComponentWrapper instance = component.Instantiate();

      // Initialize the component
      instance.ProvideComponentProperties();

      // Specify the connection manager.
      if (component.RuntimeConnectionCollection.Count > 0)
      {
        component.RuntimeConnectionCollection[0].ConnectionManager = 
          DtsConvert.GetExtendedInterface(package.Connections[0]);
        component.RuntimeConnectionCollection[0].ConnectionManagerID = 
          package.Connections[0].ID;
      }

      // Set the custom properties.
      instance.SetComponentProperty("AccessMode", 2);
      instance.SetComponentProperty("SqlCommand", 
        "Select * from Production.Product");

      // Reinitialize the metadata.
      instance.AcquireConnections(null);
      instance.ReinitializeMetaData();
      instance.ReleaseConnections();

      // Add other components to the data flow and connect them.
    }
  }
}
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
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)

    ' Add an OLEDB connection manager to the package.
    Dim cm As ConnectionManager = package.Connections.Add("OLEDB")
    cm.Name = "OLEDB ConnectionManager"
    cm.ConnectionString = "Data Source=(local);" & _
      "Initial Catalog=AdventureWorks;Provider=SQLOLEDB.1;" & _
      "Integrated Security=SSPI;"

    ' Add an OLE DB source to the data flow.
    Dim component As IDTSComponentMetaData100 = _
      dataFlowTask.ComponentMetaDataCollection.New()
    component.Name = "OLEDBSource"
    component.ComponentClassID = "DTSAdapter.OleDbSource.1"
    ' You can also use the CLSID of the component instead of the PROGID.
    'component.ComponentClassID = "{2C0A8BE5-1EDC-4353-A0EF-B778599C65A0}";

    ' Get the design time instance of the component.
    Dim instance As CManagedComponentWrapper = component.Instantiate()

    ' Initialize the component.
    instance.ProvideComponentProperties()

    ' Specify the connection manager.
    If component.RuntimeConnectionCollection.Count > 0 Then
      component.RuntimeConnectionCollection(0).ConnectionManager = _
        DtsConvert.GetExtendedInterface(package.Connections(0))
      component.RuntimeConnectionCollection(0).ConnectionManagerID = _
        package.Connections(0).ID
    End If

    ' Set the custom properties.
    instance.SetComponentProperty("AccessMode", 2)
    instance.SetComponentProperty("SqlCommand", _
      "Select * from Production.Product")

    ' Reinitialize the metadata.
    instance.AcquireConnections(vbNull)
    instance.ReinitializeMetaData()
    instance.ReleaseConnections()

    ' Add other components to the data flow and connect them.

  End Sub

End Module
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.