Bir veri akışı bileşeni için bir kullanıcı arabirimi geliştirme

Bileşen geliştiricileri, görüntülenen bir bileşen için özel bir kullanıcı arabirimi sağlayabilir SQL Server Veri Akışı Araçları (SSDT)zaman bileşen düzenlenebilir. Özel bir kullanıcı arabirimi uygulayan bileşen eklenen ya da silinen veri akışı görev ve bileşen için Yardım istendiğinde bildirimi sağlar.

Bileşen için özel bir kullanıcı arabirimi sağlamazsanız, kullanıcılar hala bileşen ve özel özelliklerini Gelişmiş Düzenleyicisi'ni kullanarak yapılandırabilirsiniz. Gelişmiş Düzenleyici kullanarak özel özellik değerleri uygun şekilde düzenlemek için kullanıcılar sağlar emin olabilirsiniz TypeConverterve UITypeEditorözelliklerini IDTSCustomProperty100uygun olduğunda. Daha fazla bilgi için "Özel özellikler oluşturma" konusuna bakın. in Bileşen tasarım zamanı yöntemleri bir veri akışı.

UITypeName özelliği ayarlama

Özel bir kullanıcı arabirimi sağlamak için geliştirici ayarlamalısınız UITypeNameözelliği DtsPipelineComponentAttributeuygulayan bir sınıfın adını IDtsComponentUIarabirimi. Bileşen tarafından bu özelliği ayarlandığında SQL Server  Integration Servicesyükler ve özel kullanıcı arabirimi bileşeni içinde düzenlenirken aramalar SSIStasarımcı.

UITypeNameTam türü tanımlar virgülle sınırlandırılmış bir dize özelliğidir. Aşağıdaki listede, sipariş, türünü tanımlayan öğeleri gösterir:

  • Tür adı

  • Derleme adı

  • Dosya sürümü

  • Kültür

  • Ortak anahtar belirteci

Aşağıdaki kod örneği dan türeyen bir sınıfı gösterir PipelineComponenttaban sınıfı ve belirtir UITypeNameözellik.

[DtsPipelineComponent(
DisplayName="SampleComponent",
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...",
ComponentType = ComponentType.Transform)]
public class SampleComponent : PipelineComponent
{
//TODO: Implement the component here.
}
[DtsPipelineComponent(
DisplayName="SampleComponent",
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...",
ComponentType = ComponentType.Transform)]
public class SampleComponent : PipelineComponent
{
//TODO: Implement the component here.
}
<DtsPipelineComponent(DisplayName="SampleComponent", _
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...", ComponentType=ComponentType.Transform)> _ 
Public Class SampleComponent 
 Inherits PipelineComponent 
End Class
<DtsPipelineComponent(DisplayName="SampleComponent", _
UITypeName="MyNamespace.MyComponentUIClassName,MyAssemblyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abcd...", ComponentType=ComponentType.Transform)> _ 
Public Class SampleComponent 
 Inherits PipelineComponent 
End Class

IDtsComponentUI arabirimi uygulama

IDtsComponentUIArabirimini içeren yöntemleri, SSISTasarımcısı çağırır bir bileşen eklendi, silinmiş ve düzenlenmiş. Bileşen geliştiricileri uygulanışını bileşen kullanıcılarıyla etkileşimde bulunmak için bu yöntemlerin kodu sağlar.

Bu sınıf genellikle bir derleme bileşenden ayrı uygulanmaktadır. Ayrı bir derleme kullanımını gerekli olmasa da, bu geliştirici oluşturmak ve dağıtmak bileşen ve bağımsız olarak, her kullanıcı arabirimi sağlar ve bileşenin ikili ayak izi küçük tutar.

Bileşen olarak düzenlenmiş gibi daha fazla denetim sağlar bileşeni geliştirici özel bir kullanıcı arabirimi uygulayan SSIStasarımcı. Örneğin, Bileşen koduna ekleyebilirsiniz Newbir bileşeni başlangıçta veri eklendiğinde çağrılan yöntemi akışı görev ve ilk yapılandırma bileşeninin kullanıcıya yol gösteren bir sihirbaz görüntüler.

Uygulayan bir sınıfın oluşturduktan sonra IDtsComponentUIarayüzü bileşeniyle kullanıcı etkileşimi yanıt kodu eklemeniz gerekir. InitializeYöntemi sağlar IDTSComponentMetaData100bileşen, arabirim ve önce denir Newve Edityöntemleri. Bu başvuru bir özel üye değişken depolanan ve bundan sonra bileşen meta verileri değiştirmek için kullanılır.

Bir bileşen ve değişiklikleri Persisting değiştirme

IDTSComponentMetaData100Arabirimi parametre olarak sağlanan Initializeyöntemi. Bu başvuru bir üye değişkeni kullanıcı arabirimi kodu tarafından önbelleğe alınmış ve ardından yanıt olarak kullanıcı etkileşimi ile kullanıcı arabirimi bileşeni değiştirmek için kullanılır.

İstediğiniz bileşeni doğrudan aracılığıyla değiştirebilirsiniz, ancak IDTSComponentMetaData100arabirimi, bu örneği oluşturmak için daha iyi CManagedComponentWrapperkullanarak Instantiateyöntemi. Arabirimi kullanarak doğrudan bileşen düzenlediğinizde, bileşen doğrulaması güvenlik önlemlerinin atlayabilir. Tasarım zamanı bileşeni bir örneğini kullanmanın avantajı CManagedComponentWrapperise, emin bileşen görüneceği için yapılan değişiklikleri üzerinde denetime sahip

Dönüş değeri Edityöntemi, bir bileşenine yapılan değişiklikler kalıcı atılır veya olup olmadığını belirler. Ne zaman bu yöntem döndürür false, tüm değişiklikler atılır; truebileşen değişiklikleri devam ederse ve paketin kaydedilmesine gerek olarak işaretler.

SSIS Tasarımcısı kullanarak

IServiceProviderParametresi Initializeyöntemi aşağıdaki hizmetleri erişim sağlar SSISDesigner:

Hizmet

Açıklama

IDtsClipboardService

Bileşen kopyalama veya yapıştırma bir parçası olarak oluşturulup oluşturulmadığını belirlemek veya kesme/yapıştırma işlemi için kullanılır.

IDtsConnectionService

Varolan bağlantıları erişmek veya paket içinde yeni bağlantı oluşturmak için kullanılır.

IErrorCollectionService

Tüm hatalar ve uyarılar yalnızca son hata alma veya uyarı yerine bileşen tarafından geçirilen yakalamak gerektiğinde veri akışı bileşenlerinden olayları yakalamak için kullanılır.

IDtsVariableService

Varolan değişkenleri erişmek veya yeni değişkenler pakette oluşturmak için kullanılır.

IDtsPipelineEnvironmentService

Üst veri akışı görev erişmek için veri akışı bileşenlerini ve diğer veri akışı bileşenleri tarafından kullanılır. Bu özellik, yavaş değiştirme boyut oluşturur ve gerektiği gibi ek veri akışı bileşenlerini bağlayan Sihirbazı gibi bir bileşen geliştirmek için kullanılabilir.

Bu hizmetleri bileşeni geliştiriciler erişmek ve bileşen yüklendiği paketi nesneleri oluşturma olanağı sağlar.

Örnek

Aşağıdaki kod örneği uygulayan bir özel kullanıcı arabirim sınıfı Tümleştirme gösterir IDtsComponentUIarabirim ve bir bileşen için düzenleyici olarak gören Windows form.

Özel kullanıcı arabirim sınıfı

Aşağıdaki kod, uygulayan sınıfı gösterir IDtsComponentUIarabirimi. EditYöntemi bileşen düzenleyiciyi oluşturur ve sonra formu görüntüler. Forma döndürme değeri, bileşen değişiklikler kalıcı olup olmadığını belirler.

using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Pipeline.Design;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

namespace Microsoft.Samples.SqlServer.Dts
{
    public class SampleComponentUI : IDtsComponentUI
    {
        IDTSComponentMetaData100 md;
        IServiceProvider sp;

        public void Help(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void New(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void Delete(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Variables vars, Connections cons)
        {
            // Create and display the form for the user interface.
            SampleComponentUIForm componentEditor = new SampleComponentUIForm(cons, vars, md);

            DialogResult result  = componentEditor.ShowDialog(parentWindow);

            if (result == DialogResult.OK)
                return true;

            return false;
        }
        public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
        {
            // Store the component metadata.
            this.md = dtsComponentMetadata;
        }
    }
}
using System;
using System.Windows.Forms;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Pipeline.Design;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

namespace Microsoft.Samples.SqlServer.Dts
{
    public class SampleComponentUI : IDtsComponentUI
    {
        IDTSComponentMetaData100 md;
        IServiceProvider sp;

        public void Help(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void New(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public void Delete(System.Windows.Forms.IWin32Window parentWindow)
        {
        }
        public bool Edit(System.Windows.Forms.IWin32Window parentWindow, Variables vars, Connections cons)
        {
            // Create and display the form for the user interface.
            SampleComponentUIForm componentEditor = new SampleComponentUIForm(cons, vars, md);

            DialogResult result  = componentEditor.ShowDialog(parentWindow);

            if (result == DialogResult.OK)
                return true;

            return false;
        }
        public void Initialize(IDTSComponentMetaData100 dtsComponentMetadata, IServiceProvider serviceProvider)
        {
            // Store the component metadata.
            this.md = dtsComponentMetadata;
        }
    }
}
Imports System 
Imports System.Windows.Forms 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports Microsoft.SqlServer.Dts.Pipeline.Design 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Class SampleComponentUI 
 Implements IDtsComponentUI 
   Private md As IDTSComponentMetaData100 
   Private sp As IServiceProvider 

   Public Sub Help(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub New(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub Delete(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Function Edit(ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal vars As Variables, ByVal cons As Connections) As Boolean 
     ' Create and display the form for the user interface.
     Dim componentEditor As SampleComponentUIForm = New SampleComponentUIForm(cons, vars, md) 
     Dim result As DialogResult = componentEditor.ShowDialog(parentWindow) 
     If result = DialogResult.OK Then 
       Return True 
     End If 
     Return False 
   End Function 

   Public Sub Initialize(ByVal dtsComponentMetadata As IDTSComponentMetaData100, ByVal serviceProvider As IServiceProvider) 
     Me.md = dtsComponentMetadata 
   End Sub 
 End Class 

End Namespace
Imports System 
Imports System.Windows.Forms 
Imports Microsoft.SqlServer.Dts.Runtime 
Imports Microsoft.SqlServer.Dts.Pipeline.Design 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Class SampleComponentUI 
 Implements IDtsComponentUI 
   Private md As IDTSComponentMetaData100 
   Private sp As IServiceProvider 

   Public Sub Help(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub New(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Sub Delete(ByVal parentWindow As System.Windows.Forms.IWin32Window) 
   End Sub 

   Public Function Edit(ByVal parentWindow As System.Windows.Forms.IWin32Window, ByVal vars As Variables, ByVal cons As Connections) As Boolean 
     ' Create and display the form for the user interface.
     Dim componentEditor As SampleComponentUIForm = New SampleComponentUIForm(cons, vars, md) 
     Dim result As DialogResult = componentEditor.ShowDialog(parentWindow) 
     If result = DialogResult.OK Then 
       Return True 
     End If 
     Return False 
   End Function 

   Public Sub Initialize(ByVal dtsComponentMetadata As IDTSComponentMetaData100, ByVal serviceProvider As IServiceProvider) 
     Me.md = dtsComponentMetadata 
   End Sub 
 End Class 

End Namespace

Özel Düzenleyicisi

Çağrı sırasında gösterilen Windows form uygulaması aşağıdaki kodu gösterir Edityöntemi.

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

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

namespace Microsoft.Samples.SqlServer.Dts
{
    public partial class SampleComponentUIForm : System.Windows.Forms.Form
    {
        private Connections connections;
        private Variables variables;
        private IDTSComponentMetaData100 metaData;
        private CManagedComponentWrapper designTimeInstance;
        private System.ComponentModel.IContainer components = null;

        public SampleComponentUIForm( Connections cons, Variables vars, IDTSComponentMetaData100 md)
        {
            variables = vars;
            connections = cons;
            metaData = md;
        }

        private void btnOk_Click(object sender, System.EventArgs e)
        {
            if (designTimeInstance == null)
                designTimeInstance = metaData.Instantiate();

            designTimeInstance.SetComponentProperty( "CustomProperty", txtCustomPropertyValue.Text);

            this.Close();
        }

        private void btnCancel_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }
    }
}
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

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

namespace Microsoft.Samples.SqlServer.Dts
{
    public partial class SampleComponentUIForm : System.Windows.Forms.Form
    {
        private Connections connections;
        private Variables variables;
        private IDTSComponentMetaData100 metaData;
        private CManagedComponentWrapper designTimeInstance;
        private System.ComponentModel.IContainer components = null;

        public SampleComponentUIForm( Connections cons, Variables vars, IDTSComponentMetaData100 md)
        {
            variables = vars;
            connections = cons;
            metaData = md;
        }

        private void btnOk_Click(object sender, System.EventArgs e)
        {
            if (designTimeInstance == null)
                designTimeInstance = metaData.Instantiate();

            designTimeInstance.SetComponentProperty( "CustomProperty", txtCustomPropertyValue.Text);

            this.Close();
        }

        private void btnCancel_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }
    }
}
Imports System 
Imports System.Drawing 
Imports System.Collections 
Imports System.ComponentModel 
Imports System.Windows.Forms 
Imports System.Data 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Partial Class SampleComponentUIForm 
  Inherits System.Windows.Forms.Form 
   Private connections As Connections 
   Private variables As Variables 
   Private metaData As IDTSComponentMetaData100 
   Private designTimeInstance As CManagedComponentWrapper 
   Private components As System.ComponentModel.IContainer = Nothing 

   Public Sub New(ByVal cons As Connections, ByVal vars As Variables, ByVal md As IDTSComponentMetaData100) 
     variables = vars 
     connections = cons 
     metaData = md 
   End Sub 

   Private Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     If designTimeInstance Is Nothing Then 
       designTimeInstance = metaData.Instantiate 
     End If 
     designTimeInstance.SetComponentProperty("CustomProperty", txtCustomPropertyValue.Text) 
     Me.Close 
   End Sub 

   Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Me.Close 
   End Sub 
 End Class 

End Namespace
Imports System 
Imports System.Drawing 
Imports System.Collections 
Imports System.ComponentModel 
Imports System.Windows.Forms 
Imports System.Data 
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper 
Imports Microsoft.SqlServer.Dts.Runtime 

Namespace Microsoft.Samples.SqlServer.Dts 

 Public Partial Class SampleComponentUIForm 
  Inherits System.Windows.Forms.Form 
   Private connections As Connections 
   Private variables As Variables 
   Private metaData As IDTSComponentMetaData100 
   Private designTimeInstance As CManagedComponentWrapper 
   Private components As System.ComponentModel.IContainer = Nothing 

   Public Sub New(ByVal cons As Connections, ByVal vars As Variables, ByVal md As IDTSComponentMetaData100) 
     variables = vars 
     connections = cons 
     metaData = md 
   End Sub 

   Private Sub btnOk_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     If designTimeInstance Is Nothing Then 
       designTimeInstance = metaData.Instantiate 
     End If 
     designTimeInstance.SetComponentProperty("CustomProperty", txtCustomPropertyValue.Text) 
     Me.Close 
   End Sub 

   Private Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Me.Close 
   End Sub 
 End Class 

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

En son karşıdan yüklemeler, makaleler, örnekler ve Microsoft video yanı sıra topluluk seçili çözümleri için ziyaret Integration ServicesMSDN sayfası:


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

Ayrıca bkz.

Kavramlar

Bir özel veri akışı bileşeni oluşturma