Aracılığıyla paylaş


Bir hedef Script bileşeni ile oluşturma

Bir hedef bileşeni kullanmak veri akışı , bir Integration Services paket veri kaydetmek için alınan ters yönde kaynakları ve dönüştürmeleri için bir veri kaynak.Normalde hedef bileşeni verilere bağlanan kaynak varolan bir Bağlantı Yöneticisi aracılığıyla.

Komut dosyası bileşeni genel bakış için bkz: Veri akışı Script bileşeni ile genişletme.

Komut dosyası bileşeni ve sizin için oluşturduğu altyapı kodu önemli ölçüde özel bir geliştirme işlemini basitleştirmek veri akışı bileşeni.Bununla birlikte, komut dosyası bileşeni nasıl çalıştığını anlamak için bir özel veri akışı Bileşen geliştirme adımlarını okumak yararlı Bir özel veri akışı Bileşen geliştirme bölümünde ve özellikle de Özel hedef Bileşen geliştirme.

Hedef bileşeni ile Başlarken

Veri akışı sekmesini için bir komut dosyası bileşeni eklediğinizde, SSIS Tasarımcısı, Script bileşeni türünü seç iletişim kutusu açılır ve seçmenizi ister bir kaynak, hedef, veya Dönüşüm komut dosyası.Bu iletişim kutusunda hedef.

Ardından, çıkışını bağlanmak bir dönüştürme hedef bileşen için SSIS Tasarımcısı.Bağlanabileceğiniz test etmek için bir kaynak bir hedef herhangi bir dönüştürme olmadan.

Meta veri Tasarım modunda bir hedef bileşeni yapılandırma

Bir hedef bileşeni oluşturma seçeneği seçtikten sonra bileşen kullanarak yapılandırma Komut dosyası dönüşümü Düzenleyicisi.Daha fazla bilgi için bkz: Bileşen Kod Düzenleyicisi'nde komut dosyası bileşeni yapılandırma.

Komut dosyası hedef kullanacağı, komut dosyası dili seçmek için küme ScriptLanguage özellik Script sayfa Komut dosyası dönüşümü Düzenleyicisi iletişim kutusu.

Not

İçin küme komut dosyası kullanan kullanan kullanan dosyası bileşeni kullanımı için varsayılan komut dosyası kullanan kullanan kullanan dosyası dilini kodlama dilini üzerinde seçenek Genel sayfa seçenekleri iletişim kutusu.Daha fazla bilgi için bkz: Genel sayfası.

Bir veri akışı hedef bileşeni bir giriş ve çıkış vardır.Giriş bileşeni kullanarak meta veriler Tasarım modunda, tamamlamanız gereken adımlardan biri için yapılandırma Komut dosyası dönüşümü Düzenleyicisi, önce özel kodunuzu yazın.

Bağlantı yöneticileri ekleme

Normalde bir hedef bileşeni verilere bağlanmak için varolan bir Bağlantı Yöneticisi kullanır kaynak için hangi verileri veri akışından kaydeder.Üzerinde Bağlantı yöneticileri sayfa Komut dosyası dönüşümü Düzenleyicisi,'ı Ekle uygun bağlantı Yöneticisi eklemek için.

Ancak, bir Bağlantı Yöneticisi, Kapsüller ve bir verilere bağlanmak için gerekli bilgileri depolar yalnızca bir kullanışlı birimdir kaynak belli türde.Verilerinizi kaydetmek veya yüklemek için kendi özel kod yazmak gerekir ve büyük olasılıkla açın ve veri bağlantısını kapatmak için kaynak.

Bağlantı yöneticileri Script bileşeni ile kullanma hakkında genel bilgi için bkz: Veri kaynakları Script bileşenindeki bağlanma.

Hakkında daha fazla bilgi için Bağlantı yöneticileri sayfa Komut dosyası dönüşümü Düzenleyicisi, bkz: Komut dosyası dönüşümü Düzenleyicisi (Bağlantı Yöneticisi sayfa).

Girdileri ve giriş sütunlar yapılandırma

Bir hedef bileşeni bir giriş ve çıkış vardır.

Üzerinde Giriş sütunları sayfa Komut dosyası dönüşümü Düzenleyicisi, sütun listesi kullanılabilir ters yönde bileşen çıkış sütunlarından veri akışı gösterir.Kaydetmek istediğiniz sütunları seçin.

Hakkında daha fazla bilgi için Giriş sütunları sayfa Komut dosyası dönüşümü Düzenleyicisi, bkz: Komut dosyası dönüşümü Düzenleyicisi (giriş sütunlar sayfa).

The Inputs and Outputs page of the Script Transformation Editor shows a single input, which you can rename.Giriş için sunucu adına göre komut dosyanızı kullanarak başvuruda bulunacak erişimci özellik otomatik oluşturulan kodda oluşturulan.

Hakkında daha fazla bilgi için girdileri ve çıktıları sayfa Komut dosyası dönüşümü Düzenleyicisi, bkz: Komut dosyası dönüşümü Düzenleyicisi (giriş ve çıkışları sayfa).

Değişkenleri ekleme

Komut dosyanızı varolan değişkenleri kullanmak isterseniz, bunları ekleyebilirsiniz ReadOnlyVariables ve ReadWriteVariables özellik alanları üzerinde Script sayfa Komut dosyası dönüşümü Düzenleyicisi.

Birden çok değişken özellik alanlarını eklediğinizde, değişken adları virgülle ayırın.Üç nokta tıklatarak birden çok değişken seçebilirsiniz () yanındaki düğme ReadOnlyVariables ve ReadWriteVariables özellik alanları ve değişkenleri'ı seçerek değişkenleri seçin iletişim kutusu.

Değişkenleri Script bileşeni ile kullanma hakkında genel bilgi için bkz: Değişkenleri kullanarak Script bileşeni.

Hakkında daha fazla bilgi için Script sayfa Komut dosyası dönüşümü Düzenleyicisi, bkz: Komut dosyası dönüşümü Düzenleyicisi (kod sayfası).

Komut dosyası kodu Tasarım modunda bir hedef bileşeni

Meta veriler için bileşeninizin yapılandırdıktan sonra kendi özel bir komut dosyası yazabilirsiniz.In the Script Transformation Editor, on the Script page, click Edit Script to open the Microsoft Visual Studio Tools for Applications (VSTA) IDE where you can add your custom script.The scripting language that you use depends on whether you selected Microsoft Visual Basic 2008 or Microsoft Visual C# 2008 as the script language for the ScriptLanguage property on the Script page.

Her türlü Script bileşeni kullanılarak oluşturulmuş bileşenler uygulanan önemli bilgiler için bkz: Kodlama ve kod bileşen hata ayıklama.

Otomatik oluşturulan kodu anlama

vsta IDE oluşturduktan sonra ve düzenlenebilir hedef bileşen yapılandırma açtığınızda ScriptMain sınıf görünür için bir saplama ile kod düzenleyicisinde ProcessInputRow yöntem.The ScriptMain class is where you will write your custom code, and ProcessInputRow is the most important method in a destination component.

Açarsanız, Project Explorer penceresi içinde vsta, komut dosyası bileşeni de salt okunur üretti görebilir BufferWrapper ve ComponentWrapper Proje öğeleri.The ScriptMain class inherits from UserComponent class in the ComponentWrapper project item.

Çalışma sırasında saat, veri akışı altyapısı çağırır ProcessInput yöntemnde UserComponent hangi geçersiz kılar sınıf ProcessInput yöntem, ScriptComponent üst sınıfaThe ProcessInput method in turn loops through the rows in the input buffer and calls the ProcessInputRow method one time for each row.

Özel kod yazma

Özel hedef bileşeni oluşturmayı tamamlamak için aşağıdaki yöntemleri kullanılabilir, komut dosyası yazmak isteyebilirsiniz ScriptMain WalkTree

  1. Geçersiz kılma AcquireConnections yöntem bağlanmak için dış veri kaynak.Connection nesnesi ya da gerekli bağlantı bilgilerini Bağlantı Yöneticisi'nden ayıklayın.

  2. Geçersiz kılma PreExecute yöntem verileri kaydetmek hazırlamak için.Örneğin, oluşturmak ve yapılandırmak isteyebilirsiniz bir SqlCommand ve parametreleri bu yöntem.

  3. Geçersiz kılınmış kullanmak ProcessInputRow Giriş her satır için dış verileri kopyalamak için yöntem kaynak.Örneğin bir SQL Server , hedef kopyaladığınız sütun değerlerini parametrelerini bir SqlCommand ve komut yürütmek saat için her satırDüz dosya hedef için her bir sütunun değerleri yazabilirsiniz bir StreamWriter, değerlere göre ayırarak sütun sınırlayıcısı.

  4. Geçersiz kılma PostExecute yöntem, gerekli, dış veri kaynak bağlantısını kesmek için ve gerçekleştirilecek tüm diğer gerekli temizleme.

Örnekler

Örnekler göstermek içinde gerekli kodu ScriptMain sınıf oluşturma bir hedef bileşeni.

Not

These examples use the Person.Address table in the AdventureWorks2008R2 sample database and pass its first and fourth columns, the int AddressID and nvarchar(30) City columns, through the data flow.Aynı veri kaynak, dönüştürme ve bu bölümdeki hedef örnekler kullanılır.Her örnek için ek bir önkoşul ve varsayımlar belgelenmiştir.

ADO.net hedef örneği

Bu örnek, varolan bir kullanan bir hedef bileşeni gösterir ADO.NET veri akıştan verileri kaydetmek için Bağlantı Yöneticisi bir SQL Server tablo.

Bu örnek kodu çalıştırmak istiyorsanız, paket ve bileşen aşağıdaki gibi yapılandırmanız gerekir:

  1. Oluşturma bir ADO.NET kullandığı Bağlantı Yöneticisi'ni SqlClient bağlanmak için sağlayıcı AdventureWorks2008R2 veritabanı.

  2. Aşağıdakini çalıştırarak, hedef tablo oluşturmak Transact-SQL komutunu AdventureWorks2008R2 Veritabanı:

    CREATE TABLE [Person].[Address2](
        [AddressID] [int] NOT NULL,
        [City] [nvarchar](30) NOT NULL
    )
    
  3. Yeni Script bileşeni için veri akışı Tasarımcı yüzey ekleyin ve hedef olarak yapılandırın.

  4. Hedef bileşen ters yönde kaynak veya dönüştürme çıkış bağlanmak SSIS Tasarımcısı.(Bağlanabileceğiniz bir kaynak bir hedef herhangi bir dönüştürme olmadan.) Bu çıkış verileri sağlamanız gerekir Person.Address tablo , AdventureWorks2008R2 örnek veritabanını içeren en az AddressID ve City sütunlar.

  5. Açık Komut dosyası dönüşümü Düzenleyicisi.Üzerinde Giriş sütunları sayfa, select AddressID ve City Giriş sütunlar.

  6. Üzerinde girdileri ve çıktıları sayfa, giriş MyAddressInput gibi daha tanımlayıcı bir adla yeniden adlandırın.

  7. Üzerinde Bağlantı yöneticileri sayfa, eklemek veya oluşturmak ADO.NET gibi bir adla Bağlantı Yöneticisi MyADONETConnectionManager.

  8. Üzerinde Script sayfa,'ı Komut dosyasını düzenle ve izleyen komut dosyası girin.Komut dosyası geliştirme ortamı kapatın.

  9. Kapat Komut dosyası dönüşümü Düzenleyicisi ve örnek çalıştırın.

Imports System.Data.SqlClient
...
Public Class ScriptMain
    Inherits UserComponent

    Dim connMgr As IDTSConnectionManager100
    Dim sqlConn As SqlConnection
    Dim sqlCmd As SqlCommand
    Dim sqlParam As SqlParameter

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        connMgr = Me.Connections.MyADONETConnectionManager
        sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection)

    End Sub

    Public Overrides Sub PreExecute()

        sqlCmd = New SqlCommand("INSERT INTO Person.Address2(AddressID, City) " & _
            "VALUES(@addressid, @city)", sqlConn)
        sqlParam = New SqlParameter("@addressid", SqlDbType.Int)
        sqlCmd.Parameters.Add(sqlParam)
        sqlParam = New SqlParameter("@city", SqlDbType.NVarChar, 30)
        sqlCmd.Parameters.Add(sqlParam)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)
        With sqlCmd
            .Parameters("@addressid").Value = Row.AddressID
            .Parameters("@city").Value = Row.City
            .ExecuteNonQuery()
        End With
    End Sub

    Public Overrides Sub ReleaseConnections()

        connMgr.ReleaseConnection(sqlConn)

    End Sub

End Class
using System.Data.SqlClient;
public class ScriptMain:
    UserComponent

{
    IDTSConnectionManager100 connMgr;
    SqlConnection sqlConn;
    SqlCommand sqlCmd;
    SqlParameter sqlParam;

    public override void AcquireConnections(object Transaction)
    {

        connMgr = this.Connections.MyADONETConnectionManager;
        sqlConn = (SqlConnection)connMgr.AcquireConnection(null);

    }

    public override void PreExecute()
    {

        sqlCmd = new SqlCommand("INSERT INTO Person.Address2(AddressID, City) " +
            "VALUES(@addressid, @city)", sqlConn);
        sqlParam = new SqlParameter("@addressid", SqlDbType.Int);
        sqlCmd.Parameters.Add(sqlParam);
        sqlParam = new SqlParameter("@city", SqlDbType.NVarChar, 30);
        sqlCmd.Parameters.Add(sqlParam);

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {
        {
            sqlCmd.Parameters["@addressid"].Value = Row.AddressID;
            sqlCmd.Parameters["@city"].Value = Row.City;
            sqlCmd.ExecuteNonQuery();
        }
    }

    public override void ReleaseConnections()
    {

        connMgr.ReleaseConnection(sqlConn);

    }

}

Düz dosya hedef örneği

Bu örnek verileri kaydetmek için varolan bir düz dosya Bağlantı Yöneticisi'ni kullanan bir hedef bileşeni gösterir veri akışı düz bir dosya için.

Bu örnek kodu çalıştırmak istiyorsanız, paket ve bileşen aşağıdaki gibi yapılandırmanız gerekir:

  1. Düz dosya Bağlantı Yöneticisi hedef dosyasına bağlanan oluşturun.Dosyanın varlığını yok; Hedef bileşeni oluşturur.Hedef dosya içeren virgülle ayrılmış dosya olarak yapılandırmak AddressID ve City sütunlar.

  2. Yeni Script bileşeni için veri akışı Tasarımcı yüzey ekleyin ve hedef olarak yapılandırın.

  3. Hedef bileşen ters yönde kaynak veya dönüştürme çıkış bağlanmak SSIS Tasarımcısı.(Bağlanabileceğiniz bir kaynak bir hedef herhangi bir dönüştürme olmadan.) Bu çıkış verileri sağlamanız gerekir Person.Address tablo , AdventureWorks2008R2 örnek veritabanı ve içermesi gereken en az AddressID ve City sütunlar.

  4. Açık Komut dosyası dönüşümü Düzenleyicisi.Üzerinde Giriş sütunları sayfa, select AddressID ve City sütunlar.

  5. Üzerinde girdileri ve çıktıları sayfa, giriş MyAddressInput gibi daha tanımlayıcı bir adla yeniden adlandırın.

  6. Üzerinde Bağlantı yöneticileri sayfa, eklemek veya düz dosya Bağlantı Yöneticisi MyFlatFileDestConnectionManager gibi açıklayıcı bir ad oluşturun.

  7. Üzerinde Script sayfa,'ı Komut dosyasını düzenle ve izleyen komut dosyası girin.Komut dosyası geliştirme ortamı kapatın.

  8. Kapat Komut dosyası dönüşümü Düzenleyicisi ve örnek çalıştırın.

Imports System.IO
...
Public Class ScriptMain
    Inherits UserComponent

    Dim copiedAddressFile As String
    Private textWriter As StreamWriter
    Private columnDelimiter As String = ","

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        Dim connMgr As IDTSConnectionManager100 = _
            Me.Connections.MyFlatFileDestConnectionManager
        copiedAddressFile = CType(connMgr.AcquireConnection(Nothing), String)

    End Sub

    Public Overrides Sub PreExecute()

        textWriter = New StreamWriter(copiedAddressFile, False)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With textWriter
            If Not Row.AddressID_IsNull Then
                .Write(Row.AddressID)
            End If
            .Write(columnDelimiter)
            If Not Row.City_IsNull Then
                .Write(Row.City)
            End If
            .WriteLine()
        End With

    End Sub

    Public Overrides Sub PostExecute()

        textWriter.Close()

    End Sub

End Class
using System.IO;
public class ScriptMain:
    UserComponent

{
    string copiedAddressFile;
    private StreamWriter textWriter;
    private string columnDelimiter = ",";

    public override void AcquireConnections(object Transaction)
    {

        IDTSConnectionManager100 connMgr = this.Connections.MyFlatFileDestConnectionManager;
        copiedAddressFile = (string) connMgr.AcquireConnection(null);

    }

    public override void PreExecute()
    {

        textWriter = new StreamWriter(copiedAddressFile, false);

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        {
            if (!Row.AddressID_IsNull)
            {
                textWriter.Write(Row.AddressID);
            }
            textWriter.Write(columnDelimiter);
            if (!Row.City_IsNull)
            {
                textWriter.Write(Row.City);
            }
            textWriter.WriteLine();
        }

    }

    public override void PostExecute()
    {

        textWriter.Close();

    }

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

En son karşıdan yüklemeleri, makaleler, örnekler ve videolarını Microsoftyanı olarak seçilen topluluk çözümleri ziyaret Integration Services sayfa msdn veya TechNet:

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