Aracılığıyla paylaş


Bir hedef Script bileşeni ile oluşturma

Hedef bileşeni veri akışı kullanan bir Integration Servicesters yönde kaynakları ve dönüştürmeleri veri kaynağına alınan verileri kaydetmek için paketi. Normalde hedef bileşeni üzerinden varolan bir bağlantı Yöneticisi veri kaynağına bağlanır.

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

Script bileşeni ve altyapı kodu sizin için oluşturduğu önemli ölçüde bir özel veri akışı bileşen geliştirme sürecini kolaylaştırmak. Ancak, Script bileşeni nasıl çalıştığını anlamak için bir özel veri akışı bileşen geliştirme adımları okumak yararlı Bir özel veri akışı bileşen geliştirmebölümünde, özellikle Özel hedef bileşen geliştirme.

Bir hedef bileşeni ile Başlarken

Veri akışı sekmesini için Script bileşeni eklediğinizde SSIStasarımcı, 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, bir dönüşümün çıktısı hedef bileşeni bağlanın SSIStasarımcı. Test etmek için bir hedef olmadan dönüştürmeler doğrudan kaynak bağlanabilirsiniz.

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

Hedef bileşeni oluşturma seçeneği seçtikten sonra bileşeni kullanarak yapılandırdığınız Komut dosyası dönüşümü Düzenleyicisi. Daha fazla bilgi için, bkz. Script bileşeni Script bileşen düzenleyiciyi içinde yapılandırma.

Komut dosyası hedef kullanacağı komut dosyası dili seçmek için ScriptLanguage özelliği Script sayfası Komut dosyası dönüşümü Düzenleyicisi iletişim kutusu.

[!NOT]

Varsayılan komut dosyası dili için Script bileşeni için kullanın komut dosyası dili Tarih seçeneği Genel sayfası seçenekleri iletişim kutusu. Daha fazla bilgi için, bkz. Genel sayfa.

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

Bağlantı Yöneticisi ekleme

Normalde hedef bileşeni için veri veri akış kaydeder veri kaynağına bağlanmak için varolan bir bağlantı Yöneticisi kullanır. Tarih Bağlantı Yöneticisi sayfası Komut dosyası dönüşümü Düzenleyicisi, tıklayın Ekle uygun bağlantı Yöneticisi eklemek için.

Ancak, Bağlantı Yöneticisi, Kapsüller ve belirli bir türde veri kaynağına bağlanmak için gereken bilgileri depolar sadece bir uygun birimdir. Yüklemek veya verilerinizi kurtarmak için kendi özel kod yazmalısınız ve muhtemelen açın ve veri kaynağı bağlantısını kapatın.

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öneticisi sayfası Komut dosyası dönüşümü Düzenleyicisi, bakın Komut dosyası dönüşümü Düzenleyicisi (Bağlantı Yöneticisi sayfa).

Girişleri ve giriş sütunlar yapılandırma

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

Tarih Giriş sütunlar sayfası 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 sayfası Komut dosyası dönüşümü Düzenleyicisi, bakın Komut dosyası dönüşümü Düzenleyicisi (giriş sütunlar sayfa).

Giriş ve çıkış sayfası Komut dosyası dönüşümü Düzenleyicisi sen-ebilmek rename tek bir girişi gösterir. Girişi otomatik olarak oluşturulan kodda oluşturulan erişeni özelliğini kullanarak komut dosyanıza ismi başvuracaktır.

Hakkında daha fazla bilgi için giriş ve çıkış sayfası Komut dosyası dönüşümü Düzenleyicisi, bakın 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 ReadOnlyVariablesve ReadWriteVariablesözellik alanları Script sayfası Komut dosyası dönüşümü Düzenleyicisi.

Birden çok değişken özellik alanları eklediğinizde, değişken adları noktalı virgülle ayırın. Üç nokta tıklatarak birden çok değişken de seçebilirsiniz (...) yanındaki düğme ReadOnlyVariablesve 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 sayfası Komut dosyası dönüşümü Düzenleyicisi, bakın Komut dosyası dönüşümü Düzenleyicisi (kod sayfası).

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

Meta veriler, bileşen için yapılandırdıktan sonra kendi özel komut dosyası yazabilirsiniz. İçinde Komut dosyası dönüşümü Düzenleyicisi, Script sayfa'yı Komut dosyası Düzenle açmak için Microsoft  Visual StudioAraçları uygulamaları (vsta) nereye sen-ebilmek eklemek senin özel JavaScript IDE Kullandığınız komut dosyası dili olup seçtiğiniz bağlıdır Microsoft  Visual Basic 2008ya Microsoft  Visual C# 2008komut dosyası dili olarak ScriptLanguage özelliği Script sayfa.

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

Otomatik olarak oluşturulan kodu anlama

vsta oluşturduktan sonra IDE ve hedef bileşeni, düzenlenebilir yapılandırma açtığınızda ScriptMainsınıfı için bir saplama ile kod düzenleyicisinde görünür ProcessInputRowyöntemi. ScriptMainSınıftır nerede özel kodunuzu yazacaksınız ve ProcessInputRowen önemli hedef bileşeni yöntemidir.

Eğer sen açık Project Explorer vsta penceresinde, Script bileşeni de salt üretti gördüğünüz BufferWrapperve ComponentWrapperproje öğeleri. ScriptMainDevraldığı sınıfı UserComponentiçinde sınıf ComponentWrapperProje öğesi.

Çalıştırma sırasında veri akışı altyapısı çağırır ProcessInputyöntemi UserComponenthangi geçersiz kılar sınıf ProcessInputyöntemi ScriptComponentüst sınıf ProcessInputYöntemi sırayla döngüler ile görüşmeleri ve giriş arabelleği satırları ProcessInputRowyöntemi her satır için bir kez.

Özel kod yazma

Özel hedef bileşeni oluşturmayı tamamlamak için aşağıdaki yöntemleri kullanılabilir içinde komut dosyası yazmak isteyebilirsiniz ScriptMainsınıf

  1. Geçersiz AcquireConnectionsdış veri kaynağına bağlanmak için yöntem. Connection nesnesi ya da gerekli bağlantı bilgilerini bağlantı Yöneticisi'nden ayıklayın.

  2. Geçersiz PreExecuteverileri kaydetmek hazırlama yöntemi. Örneğin, sen-ebilmek istemek-e oluşturmak ve yapılandırmak bir SqlCommandve bu yöntem parametrelerinin.

  3. Geçersiz kılınmış kullanmak ProcessInputRowdış veri kaynağına her giriş satır kopyalamak için yöntem. Örneğin bir SQL Serverhedef kopyaladığınız sütun değerlerini parametreleri bir SqlCommandve her satır için bir kez bağlamını. Düz dosya hedef için sen-ebilmek yazmak değerleri her sütun için bir StreamWriter, değerleri sütun ayırıcı tarafından ayıran.

  4. Geçersiz PostExecuteyöntemi gerekiyorsa dış veri kaynağından çıkarın ve herhangi bir diğer gerekli temizleme gerçekleştirmek için.

Örnekler

Gerekli kod izleyin örnekler göstermektedir ScriptMainhedef bileşeni oluşturmak için sınıf.

[!NOT]

Bu örnekler kullanmak Person.Address içinde tablo AdventureWorks örnek veritabanı ve onun birinci ve dördüncü sütun geçmek int AddressID ve nvarchar(30) şehir sütunlar, veri akışı aracılığıyla. Aynı veri kaynağı, dönüştürme ve hedef örnekleri bu bölümde kullanılır. Her örneği 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.NETveri akışı veri kaydetmek için Bağlantı Yöneticisi'ni bir SQL Servertablosu.

Bu örnek kodu çalıştırmak istiyorsanız, paketi ve bileşen aşağıdaki gibi yapılandırmalısınız:

  1. Yaratmak bir ADO.NETBağlantı Yöneticisi kullanan SqlClientSağlayıcı bağlanmak için AdventureWorks veritabanı.

  2. Aşağıdakini çalıştırarak, hedef tablo oluşturmak Transact-SQLkomutunu AdventureWorksveritabanı:

    CREATE TABLE [Person].[Address2](
        [AddressID] [int] NOT NULL,
        [City] [nvarchar](30) NOT NULL
    )
    
    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. Bir ters yönde kaynak veya dönüşüm çıktısını hedef bileşeni bağlanın SSIStasarımcı. (Kaynak doğrudan hedef olmadan dönüştürmeler bağlanabilirsiniz.) Bu çıkış verileri sağlamanız gerekir Person.Address tablo AdventureWorks içeren örnek veritabanı en az AddressID ve şehri sütunlar.

  5. Açık Komut dosyası dönüşümü Düzenleyicisi. Tarih Giriş sütunları page, select AddressID ve şehri giriş sütunları.

  6. Tarih giriş ve çıkış sayfasında, giriş MyAddressInput gibi daha tanımlayıcı bir adla yeniden adlandırın.

  7. Tarih Bağlantı Yöneticisi sayfa, eklemek veya oluşturmak ADO.NETBağlantı Yöneticisi MyADONETConnectionManager gibi bir ad ile.

  8. Tarih Script sayfa'yı Komut dosyası Düzenle ve aşağıdaki komut dosyası girin. Komut dosyası geliştirme ortamı kapatın.

  9. Yakın 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
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);

    }

}
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 veri akış düz bir dosya kaydetmek için varolan bir düz dosya Bağlantı Yöneticisi'ni kullanan bir hedef bileşeni gösterir.

Bu örnek kodu çalıştırmak istiyorsanız, paketi ve bileşen aşağıdaki gibi yapılandırmalısınız:

  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ış bir dosya yapılandırmak AddressID ve şehri sütunlar.

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

  3. Bir ters yönde kaynak veya dönüşüm çıktısını hedef bileşeni bağlanın SSIStasarımcı. (Kaynak doğrudan hedef olmadan dönüştürmeler bağlanabilirsiniz.) Bu çıkış verileri sağlamanız gerekir Person.Address tablo AdventureWorks örnek veritabanını ve içermesi gereken en az AddressID ve şehir sütunlar.

  4. Açık Komut dosyası dönüşümü Düzenleyicisi. Tarih Giriş sütunlar page, select AddressID ve şehir sütunlar.

  5. Tarih giriş ve çıkış sayfasında, giriş MyAddressInput gibi daha tanımlayıcı bir adla yeniden adlandırın.

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

  7. Tarih Script sayfa'yı Komut dosyası Düzenle ve aşağıdaki komut dosyası girin. Komut dosyası geliştirme ortamı kapatın.

  8. Yakın 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
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();

    }

}
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ü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 kaynak Script bileşeni ile oluşturma

Özel hedef bileşen geliştirme