Veri akışı bileşenleri programsal olarak ekleme

Bir veri akışı oluştururken, bileşenleri ekleyerek başlatın.Bu bileşenleri yapılandırmak ve birlikte çalışma veri akışını sağlamak için bunları bağlamak saat.Bu bölüm, bir bileşen oluşturma tasarım-veri akışı görevi ekleme açıklar saat bileşeni ve sonra bileşen yapılandırma örnekni.Bileşenleri bağlama hakkında daha fazla bilgi için bkz: Veri akışı bileşenleri programsal olarak bağlanma.

Bir bileşeni ekleme

Call New() yöntem ComponentMetaDataCollection() Yeni bir bileşen oluşturmak ve veri akışı göreve eklemek için koleksiyon'ı tıklatın. Bu yöntem döndürür IDTSComponentMetaData100 bileşen, arabirim. Ancak, bu noktadan IDTSComponentMetaData100 herhangi bir bileşene özgü bilgileri içermiyor. küme ComponentClassID() bileşen türünü tanımlayan özellik. Çalışma sırasında bileşeninin bir örneğini oluşturmak için bu özelliğin değeri veri akışı görevi kullanan saat.

Belirtilen değer ComponentClassID() özellik CLSID, PROGID, olabilir veya CreationName() Bileşen özelliği. CLSID değeri olarak bileşenin normalde Properties penceresinde görüntülenir ComponentClassID() özellik. Bu özellik ve diğer özellikleri kullanılabilir bileşenler'i edinme hakkında daha fazla bilgi için bkz: Veri akışı bileşenleri programsal olarak keşfetme.

Yönetilen bir bileşen ekleme

Çünkü, bu değerler bir sarmalayıcı ve bileşenin kendi kendine işaret bir veri akışına yönetilen bir veri akışı bileşenleri eklemek için CLSID veya PROGID kullanamazsınız.Bunun yerine kullanabileceğiniz CreationName özellik veya AssemblyQualifiedName Aşağıdaki örnekte gösterildiği gibi özellik.

Kullanmayı düşünüyorsanız AssemblyQualifiedName özellik, ardından başvuru eklemelisiniz, Visual Studio için proje derleme yönetilen bileşen içerir. Bu derlemeleri .NET sekmesinde listelenen Başvuru Ekle iletişim kutusu.Normal olarak bulmak için gözatmanız gerekir derleme, C:\Program Files\Microsoft SQL Server\100\DTS\PipelineComponents klasör.

Yerleşik bir yönetilen veri akışı bileşenleri içerir:

  • ADO.NET Kaynak

  • xml kaynak

  • veri okuyucu hedef

  • SQL Server Sıkıştırma hedefi

  • Komut dosyası bileşeni

Aşağıdaki kod örneği, her iki veri akışı için yönetilen bir bileşen ekleme yolları gösterilmiştir:

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

Tasarım-CVE-2006-saat örnekni bileşeni oluşturma

Call Instantiate() Tasarım oluşturma yöntem saat ile tanımlanan bileşen örneği ComponentClassID() özellik. Bu yöntem döndürür CManagedComponentWrapper Yönetilen sarıcı olan bir nesne için IDTSDesigntimeComponent100 arabirim.

Mümkün olduğunda tasarım-yöntemlerini kullanarak bir bileşeni değiştirmelisiniz saat yerine bileşen meta veriler doğrudan değiştirmek yoluyla örnek.Genellikle olsa öğeleri, bağlantılar gibi doğrudan kurmalısınız meta veriler, izlemek ve değişiklikleri doğrulamak için bileşenin yeteneği atlamak için meta verileri doğrudan değiştirmek için inadvisable olur.

Bağlantıları atama

OLE DB gibi bazı bileşenlerin kaynak bileşeni, bir dış veri bağlantısı gerektirir ve varolan kullanın. ConnectionManager Nesne bu amaç için bir pakette. The Count() özellik of the RuntimeConnectionCollection() koleksiyon indicates the number of run-saat ConnectionManager objects required by the component. Sayı sıfırdan büyük değilse, bileşeni, bir bağlantı gerektiriyor.Belirterek paket bileşeni için bir Bağlantı Yöneticisi atama ConnectionManager() ve Name() ilk bağlantı özelliklerini 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.

Özel özelliklerin değerlerini ayarlama

Sonra tasarım-oluşturma saat bileşeni, arama örneği ProvideComponentProperties() yöntem. Bu yöntem için bir kurucu benzer çünkü özel özelliklerini ve giriş ve çıkış nesnelerini oluşturarak yeni oluşturulan bir bileşen başlatır.Çağırma ProvideComponentProperties() bir bileþen bileşeni kendini sıfırlamak ve daha önce meta veriler için yapılmış olan değişiklikleri kaybetmek için birden fazla saat.

The CustomPropertyCollection() of the component contains a koleksiyon of IDTSCustomProperty100 objects specific to the component. Aradığınızda farklı olarak, nesnenin özelliklerini her zaman nesne üzerinde görülebilir olduğu, diğer bir programlama modeli bileşenleri yalnızca kendi özel özellik koleksiyonları doldurmak ProvideComponentProperties() yöntem. Yöntem çağrısı sonra SetComponentProperty(String, Object) Tasarım-yöntemi saat özel özelliklerini değerler atamak için bileşen örneği. Bu yöntem, özel özellik için tanımlar ve yeni değeri ad/değer çifti kabul eder.

Çıktı sütunları başlatılıyor

Göreve bir bileşen eklemek ve yapılandırmak sonra sütun koleksiyon başlatılamıyor IDTSOutput100 nesne. Bu adım, özellikle kaynak bileşenleri için geçerlidir, ancak bunlar genellikle Geliş yönündeki bileşenlerin aldıkları sütunlara bağımlı olduğundan dönüştürme ve hedef bileşenleri için sütunları başlatılamıyor..

Call ReinitializeMetaData() yöntem, bir Kaynak bileşeninin çıkışlarını sütunlarda başlatılamıyor. Dış veri kaynak s bileşenleri otomatik olarak bağlanma, çünkü arama AcquireConnections(Object) önce arama yöntem ReinitializeMetaData() Bileşen erişim, dış veri sağlamak için kaynak ve sütun meta veriler doldurmak için. Son olarak, arama ReleaseConnections() bağlantı yayımlamayı yöntem.

Sonraki adım

Bileşen yapılandırma sonra sonraki adıma tartışılan konu içinde bileşenler arasındaki yollar oluşturmak için olur Iki bileşenleri arasında bir yol oluşturma..

Örnek

Aşağıdaki kod örnek, OLE DB kaynağı bileşeni için veri akışı görevi ekler, bileşen tasarım zamanı bir kopyasýný oluþturur ve bileşenin özelliklerini yapılandırır.Bu örnek, bir derlemeye Microsoft.SqlServer.DTSRuntimeWrap ek başvuru gerektirir.

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) Tümleştirme Hizmetleri ile güncel kalın

Karşıdan yüklemeler, makaleleri, örnekler ve en son Microsoft video yanı sıra, seçili topluluğun çözümleri için ziyaret Integration Services sayfa MSDN veya TechNet:

Bu güncelleştirmelerin otomatik bildirim için kullanılabilir RSS akışlarına abone olmak sayfa.