Aracılığıyla paylaş


Hedef komut dosyası bileşeni ile oluşturma

Bir hedef bileşeni veri akışının kullandığınız bir Integration Services Geliş yönündeki kaynak s ve dönüşümler için veri alınan verileri kaydetmek için paketn 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: Komut dosyası bileşeni ile veri akışı genişletme.

Komut dosyası bileşeni ve sizin için oluşturduğu altyapı kodu özel bir geliştirme işlemini önemli ölçüde basitleştirmek veri akışı bileşeni.Ancak, komut dosyası bileşeni çalışma şeklini anlamak için , özel veri akışı bileşenlerinde geliştirmek için gereken adımları boyunca okumak yararlı Özel veri akışı bileşen geliştirme Bölüm ve özellikle Bir Özel hedef bileşen geliştirme.

Bir hedef bileşeni ile çalışmaya başlama

Bir komut dosyası bileşeni eklediğinizde veri akışı sekmesi SSIS Tasarımcı, Komut dosyası bileşeni türünü seçin. iletişim kutusu açılır ve bir seçmek isteyip istemediğinizi sorarKaynak, Hedef, or Dönüştürme komut dosyası.Bu iletişim kutusunda seçin. Hedef.

Sonra hedef bileşeni dönüştürme çıkışını bağlanma SSIS Tasarımcı. Sınamak için bir kaynak bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.

meta veriler ve Tasarım modunda bir hedef bileşeni'ni yapılandırma

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

Hedef komut dosyası kullanan bir komut dosyası dili seçmek için , ScriptLanguage özellikKomut dosyası sayfaKomut dosyası dönüştürme Düzenleyicisi iletişim kutusu.

Not

Varsayılan komut dosyası kullanan kullanan dosyası kullanan bileşeni dilin komut dosyası kullanan kullanan dosyası kullanan ayarlamak için komut dosyası kullanan kullanan dosyası kullanan dili seçeneğiGenel sayfaSeçenekleri iletişim kutusu.Daha fazla bilgi için bkz:Genel sayfa.

Veri akışı hedef bileşeni, bir giriş ve hiçbir çıkış vardır.Bileşen kullanarak meta veriler tasarım modunda, tamamlamanız gereken adımlardan biri için giriş yapılandırma Komut dosyası dönüştürme Düzenleyicisiözel komut dosyanızı yazmak için önce.

Bağlantı Yöneticisi'ni ekleme

Normalde verilere bağlanmak için varolan bir Bağlantı Yöneticisi bir hedef bileşenini kullanan kaynak için hangi veri veri akış kaydeder.Üzerinde Bağlantı Yöneticisi sayfaKomut dosyası dönüştürme Düzenleyicisi, click Ekleme uygun Bağlantı Yöneticisi'ni eklemek için.

Ancak, bir Bağlantı Yöneticisi, saklar ve bir verilere bağlanmak için gereken bilgileri depolar yalnızca bir uygun birimdir kaynak belirli bir türde.Yüklemek ya da, verilerinizi kaydetmek için kendi özel kodlarınızı yazmalıdır ve büyük olasılıkla açmak ve veri kaynağı bağlantısını kapatmak için.

Komut dosyası bileşeni ile Bağlantı Yöneticisi'ni kullanma hakkında genel bilgi için bkz: Veri kaynakları Kod bileşenindeki bağlanılıyor.

Hakkında daha fazla bilgi için Bağlantı Yöneticisi sayfaKomut dosyası dönüştürme Düzenleyicisi, see Komut dosyası dönüştürme Düzenleyicisi (Bağlantı Yöneticisi sayfa).

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

Bir hedef bileşeni, bir giriş ve hiçbir çıkış sahiptir.

Üzerinde Giriş bir sütun sayfaKomut dosyası dönüştürme Düzenleyicisi, sütun listesi, veri akışında kullanılabilir Geliş yönündeki bileşeninin çıktı sütunları gösterir.Kaydetmek istediğiniz sütunları seçin.

Hakkında daha fazla bilgi için Giriş bir sütun sayfaKomut dosyası dönüştürme Düzenleyicisi, see Komut dosyası dönüştürme Düzenleyicisi (giriş sayfası sütunları).

The Inputs and Outputs sayfa of the Script dönüştürme Editor shows a single input, which you can rename.Giriş için otomatik oluşturulan kodda oluşturulan erişimci özelliðini kullanarak komut adıyla başvuracaktır.

Hakkında daha fazla bilgi için Giriş ve çıkışlarını sayfaKomut dosyası dönüştürme Düzenleyicisi, see Dönüştürme komut dosyası Düzenleyicisi (giriş ve çıkışlarını sayfa).

Değişkenleri ekleme

Varolan komut dosyanızda kullanmak istiyorsanız, bunları ekleyebileceğiniz ReadOnlyVariables ve ReadWriteVariables üzerinde özellik alanları Komut dosyası sayfaKomut dosyası dönüştürme 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**…**) düğmesiniReadOnlyVariables ve ReadWriteVariables özellik alanları ve içindeki değişkenler'ı seçerek Değişkenleri seçin. iletişim kutusu.

Değişkenler, komut dosyası bileşeni ile kullanma hakkında genel bilgi için bkz: Komut dosyası bileşen değişkenleri kullanma.

Hakkında daha fazla bilgi için Komut dosyası sayfaKomut dosyası dönüştürme Düzenleyicisi, see Komut dosyası dönüştürme Düzenleyicisi (kod sayfası).

Kod ve Tasarım modunda, bir hedef bileşeni komut dosyası kullanan kullanan dosyası kullanan

Bileşeniniz için meta veriler yapılandırdıktan sonra kendi özel 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.

Komut dosyası bileşeni kullanılarak oluşturulmuş bileşenler her tür için geçerli olan önemli bilgi için bkz: Kodlama ve kod bileşen hata ayıklama.

Otomatik oluşturulan kodu anlama

VSTA oluşturduktan sonra IDE ve bir hedef bileşeni, düzenlenebilir yapılandırma açın ScriptMain Kod Düzenleyicisi ile için saplama sınıf görünür ProcessInputRow yöntem. The ScriptMain class is where you will write your custom code, and ProcessInputRow is the most important yöntem in a hedef component.

Açmak, Proje Gezgini VSTA penceresinde, komut dosyası bileşeni de oluşturduğu, salt okunur görebilirsinizBufferWrapper ve ComponentWrapper Proje maddeler. The ScriptMain class inherits from UserComponent class in the ComponentWrapper project öğe.

veri akışı altyapısı çalışma zamanında çağırır ProcessInput yöntemde UserComponent sınıf, hangi geçersiz kılmaları ProcessInput(Int32, PipelineBuffer) yöntem ScriptComponent üst sınıf. The ProcessInput yöntem in turn loops through the rows in the input buffer and calls the ProcessInputRow yöntem one saat for each row.

Kendi özel kod yazma

Özel bir hedef bileşeni oluşturmayı tamamlamak için , kullanılabilir durumda olan aşağıdaki yöntemleri, komut dosyası yazmak isteyebilirsiniz ScriptMain sınıf.

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

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

  3. Geçersiz kılınmış kullanın. ProcessInputRow Giriş her satır için bir dış veri kopyalamak için yöntem kaynak. Örneğin, için bir SQL Server Hedef, sütun değerlerini parametrelerini kopyalayabilirsiniz bir SqlCommand ve her satır için saat komutu yürütün. Düz dosya hedefi, her sütuna ilişkin değerleri yazabileceğiniz bir StreamWriter, değerleri, sütun sınırlayıcısı ayırın.

  4. Geçersiz kılma PostExecute Dış verileri bağlantısını kesmek için yöntem kaynak, gerekirse ve diğer gerekli bir temizlik yapmak.

Örnekler

Izleyen örneklere gereklidir kodunu gösteren ScriptMain bir hedef bileşen oluşturmak için sınıf'ı tıklatın.

Not

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

ADO.NET hedef örneği

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

Bu örnek kodu uygulamak istiyorsanız, paket ve bileşen şekilde yapılandırmanız gerekir:

  1. Oluşturma bir ADO.NET kullanan bir Bağlantı Yöneticisi SqlClient bağlanmak için bir sağlayıcı AdventureWorks veritabanıdır.

  2. Aşağıdaki komutu çalıştırarak, hedef tablo oluşturma Transact-SQL komut, AdventureWorks Veritabanı:

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

  4. Hedef bileşeninde Geliş yönündeki çok kaynak ya da dönüştürme çıkışını bağlanmak için SSIS Tasarımcı. (Bir kaynaktan bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.) Bu çıktıyı verileri sağlamanız gerekirPerson.Address tablo of the AdventureWorks en az örnek veritabanıAddressID and Şehir sütunlar.

  5. Açık Komut dosyası dönüştürme Düzenleyicisi.Üzerinde Giriş bir sütun sayfa, seçin.AddressID and Şehir sütunları girin.

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

  7. Üzerinde Bağlantı Yöneticisi sayfa ekleme veya oluşturmaADO.NET Bağlantı Yöneticisi gibi bir adla MyADONETConnectionManager.

  8. Üzerinde Komut dosyası sayfasında, tıklatın.Komut dosyası Düzenle ve aşağıdaki kodu girin.Komut dosyası geliştirme ortamı kapatın.

  9. Kapatma Komut dosyası dönüştürme Düzenleyicisi ve Çalıştır örnek.

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

Bu örnek kodu uygulamak istiyorsanız, paket ve bileşen şekilde yapılandırmanız gerekir:

  1. Düz dosya Bağlantı Yöneticisi, hedef dosyaya bağlayan oluşturun.Dosya var olması gerekmez; hedef bileşeni oluşturur.Hedef dosya içeren bir virgülle ayrılmış dosya olarak yapılandırmak AddressID and Şehir sütunlar.

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

  3. Hedef bileşeninde Geliş yönündeki çok kaynak ya da dönüştürme çıkışını bağlanmak için SSIS Tasarımcı. (Bir kaynaktan bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.) Bu çıktıyı verileri sağlamanız gerekirPerson.Address tablo of the AdventureWorks örnek veritabanı ve en az içermelidir AddressID and Şehir sütunlar.

  4. Açık Komut dosyası dönüştürme Düzenleyicisi.Üzerinde Giriş bir sütun sayfa, seçin.AddressID and Şehir sütunlar.

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

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

  7. Üzerinde Komut dosyası sayfasında, tıklatın.Komut dosyası Düzenle ve aşağıdaki kodu girin.Komut dosyası geliştirme ortamı kapatın.

  8. Kapatma Komut dosyası dönüştürme Düzenleyicisi ve Çalıştır örnek.

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