Share via


Uyumsuz bir dönüşümü Script bileşeni ile oluşturma

Dönüşüm bileşeni veri akışı kullanmak bir Integration Servicesdeğiştirmek ve kaynaktan hedefe geçerken, verileri çözümlemek için paket. Bileşen geçerken her giriş satır ile zaman uyumlu çıkışlarına dönüşümü işler. İle zaman uyumsuz çıkışlarına dönüşümü dönüşümü tüm giriş satırları aldı ya da tüm giriş satırları aldı önce belirli satırları dönüşümü çıkış kadar işleme tamamlanmasını bekler. Bu konuda, uyumsuz bir dönüşümü anlatılmaktadır. Senin işleme zaman uyumlu dönüşümü istiyorsa, bakın Zaman uyumlu dönüşümü Script bileşeni ile oluşturma. Senkron ve asenkron bileşenleri arasındaki farklar hakkında daha fazla bilgi için bkz: Zaman uyumlu ve zaman uyumsuz dönüşümleri anlama.

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 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şeni geliştirilmesinde izlemeniz gereken adımları okumak yararlı Bir özel veri akışı bileşen geliştirmebölümünde, özellikle Zaman uyumlu çıkışlarına ile özel dönüşümü bileşen geliştirme.

Asynchronous dönüşümü bileşeni ile Başlarken

Veri akışı sekmesini için Script bileşeni eklediğinizde SSIStasarımcı, Script bileşeni türünü seç kaynak, dönüşüm veya hedef bileşeni önceden yapılandırmak isteyip istemediğinizi soran iletişim kutusu görüntülenir. Bu iletişim kutusunda Dönüşüm.

Meta veri Tasarım modunda Asynchronous dönüşümü bileşen yapılandırma

Dönüşüm 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ı bileşen kullanan 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ışı dönüşümü bileşeni bir giriş vardır ve bir veya birden çok çıkış destekler. Giriş ve çıkışları, bileşenin yapılandırma kullanarak meta veri Tasarım modunda, tamamlamanız gereken adımlardan biri olan Komut dosyası dönüşümü Düzenleyicisi, önce özel kodunuzu yazın.

Giriş sütunlar yapılandırma

Script bileşeni kullanılarak oluşturulan bir dönüşüm bileşeni tek bir giriş vardır.

Tarih Giriş sütunlar sayfası Komut dosyası dönüşümü Düzenleyicisi, sütunlar listesinden kullanılabilir ters yönde bileşen çıkış sütunlarından veri akışı gösterir. Dönüştürme veya geçmek istediğiniz sütunları seçin. Okuma ve yazma gibi bir yerde dönüştürmek istediğiniz sütunları işaretleyin.

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ş, çıkış ve çıktı sütunları yapılandırma

Dönüşüm bileşeni, bir veya birden çok çıkış destekler.

Sık sık iki çıkış ile zaman uyumsuz çıkışlarına dönüşümü vardır. Örneğin, belirli bir şehirde bulunan adres sayısı sayarken, başka bir çıkış için toplama sonucu gönderilirken bir çıkış için adres verileri üzerinden geçmek isteyebilirsiniz. Toplama çıktı da yeni bir çıkış sütun gerektirir.

Tarih girişleri ve çıkışları sayfası Komut dosyası dönüşümü Düzenleyicisi, tek bir çıkışı varsayılan olarak oluşturuldu, ancak oluşturulan çıktı sütunları bakın. Düzenleyici bu sayfada, aşağıdaki öğeleri yapılandırabilirsiniz:

  • Bir veya daha fazla ek çıkışları, bir çıktı için bir toplama sonucu gibi oluşturmak isteyebilirsiniz. Kullanım Eklemek çıktı ve Çıkış kaldırma çıkışları, asynchronous dönüşümü bileşeni yönetmek için düğmeler. Set SynchronousInputIDözelliği her çıktı çıktı sadece bir ters yönde bileşenden verileri geçmek veya yerinde varolan satır ve sütun dönüşümü belirtmek için sıfır. Giriş zaman uyumsuz çıkışlarına kılan bu ayardır.

  • Giriş ve çıkışları için kolay bir ad atamak isteyebilirsiniz. Script bileşeni bu adları yazılı erişeni özelliklerini başvurmak için giriş için kullanacağınız üretmek için kullanır ve komut dosyanızı.

  • Sık sık uyumsuz bir dönüşümü veri akışına sütun ekler. Ne zaman SynchronousInputIDbir çıkış özelliği sıfırsa, gösteren çıktı sadece bir ters yönde bileşenden verileri geçmek veya yerinde varolan satır ve sütun dönüşümü ekleyin ve çıktı sütunları açıkça çıktı yapılandırmanız gerekir ki,. Çıktı sütunları için eşleştirildikleri giriş sütunları aynı ada sahip gerekmez.

  • Ek bilgi içeren daha fazla sütun eklemek isteyebilirsiniz. Ek sütunlar verilerle doldurmak için kendi kodunuzu yazmalısınız. Standart hata çıktı davranışı yeniden oluşturma hakkında daha fazla bilgi için bkz: Hata çıktı Script bileşeni simulasyonu.

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

Değerleri betiğinizde kullanmak istediğiniz herhangi bir varolan değişkenleri varsa, 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 Asynchronous dönüşümü bileşeni

Tüm meta verileri, bileşen için yapılandırdıktan sonra ö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

Oluşturma ve dönüşüm bileşeni, düzenlenebilir yapılandırdıktan sonra vsta IDE açtığınızda ScriptMainile taslakları için kod düzenleyicisinde görünür sınıfı ProcessInputRowve CreateNewOutputRowsyöntemleri. ScriptMainSınıftır nerede özel kodunuzu yazacaksınız ve ProcessInputRowen önemli bir dönüşüm bileşeni yöntemidir. CreateNewOutputRowsYöntemi genellikle uyumsuz bir dönüşümü gibi her iki bileşenin kendi çıktı satırları oluşturmanız gerekir o olan bir kaynak bileşeninde kullanılır.

VSTA'ı Project Explorer penceresinde, Script bileşeni de salt üretti gördüğünüz BufferWrapperve ComponentWrapperproje öğeleri. ScriptMainSınıf devralır UserComponentiçinde sınıf ComponentWrapperProje öğesi.

Çalıştırma sırasında veri akışı altyapısı aramalar PrimeOutputyönteminde UserComponenthangi geçersiz kılar sınıf PrimeOutputyöntemi ScriptComponentüst sınıf PrimeOutputSırayla yöntemini çağıran CreateNewOutputRowsyöntemi.

Sonra 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 asynchronous dönüşümü bileşeni oluşturmayı tamamlamak için geçersiz kılınmış kullanmanız gerekir ProcessInputRowgiriş her satır veri işleme yöntemi. Çıkışlar için giriş zaman uyumlu olmadığından, çıkışlarına veri satırları açıkça yazmalısınız.

Uyumsuz bir dönüşümü, sen-ebilmek kullanma AddRowyöntem içinde uygun çıktı satırları eklemek için ProcessInputRowya ProcessInputyöntemleri. Kullanmak zorunda değil CreateNewOutputRowsyöntemi. Sonuçlar, toplama sonuçları, örneğin tek bir satır için belli bir çıktı yazıyorsanız, çıkış satır önceden kullanarak oluşturabileceğiniz CreateNewOutputRowsyöntemi ve sonradan-den sonra tüm giriş satır işleme değerleri doldurun. Ancak birden çok satır oluşturmak yararlı değil CreateNewOutputRowsyöntemi, Script bileşeni yalnızca geçerli satırda bir giriş ya da çıkış kullanmanıza olanak sağladığından. CreateNewOutputRowsYöntemi daha önemli bir kaynak bileşeni işlemeye giriş satır orada.

Sen-ebilmek da istemek-e geçersiz kılmak ProcessInputyöntemi kendisi, böylece ek ön veya son önce veya sonra giriş arabelleği ve çağrı döngü işlem yapabileceğiniz ProcessInputRowher satır için. Örneğin, bu konudaki kod örneklerinden birini geçersiz kılar ProcessInputbelirli bir şehirdeki adresler sayısını ProcessInputRowdöngüler satırlar arasında . örnek Özet değeri, tüm satırlar işlenen sonra ikinci çıktıya yazar. Örnek çıktıda tamamlayan ProcessInputçıktı arabelleği zaman artık kullanılabilir çünkü PostExecutedenir.

Gereksinimlerinize bağlı olarak, size de komut dosyası yazmak isteyebilirsiniz PreExecuteve PostExecuteyöntemleri mevcut ScriptMainherhangi bir ön veya son işlem gerçekleştirmek için sınıf.

[!NOT]

Sıfırdan özel veri akışı bileşen geliştirme, geçersiz kılmak önemli olacaktır PrimeOutputönbellek yöntemine başvuran çıktı arabelleği böylece veri arabelleği daha sonra ekleyebilirsiniz. Her çıkış arabellekte gösteren otomatik olarak oluşturulmuş bir sınıf olduğundan Script bileşeni, bu gerekli değildir BufferWrapperProje öğesi.

Örnek

Bu örnek, gerekli özel kod gösterir ScriptMainbir asynchronous dönüşümü 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.

Bu örnek, bir asynchronous dönüşümü bileşeni ile iki çıkış gösterir. Bu dönüşüm geçtiği AddressID ve şehri sütun için bir çıkış, bu adresleri (Redmond, Washington, ABD), belirli bir şehirde bulunan sayar ve sonra ikinci bir çıktı elde edilen değere çıkarır.

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

  1. Yeni Script bileşeni için veri akışı Tasarımcı yüzey ekleyin ve bir dönüşümü yapılandırın.

  2. Yeni dönüşümü bileşen Tasarımcısında bir kaynak veya bir dönüşüm çıkış bağlanın. Bu çıkış verileri sağlamanız gerekir Person.Address tablo AdventureWorks içeren örnek veritabanı en az AddressID ve şehri sütunlar.

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

  4. Tarih girişleri ve çıkışları sayfasında, eklemek ve yapılandırmak AddressID ve şehir çıkış sütunlar üzerinde birinci çıktı. İkinci çıktı ve ikinci çıktı Özet değeri için bir çıkış sütunu ekleyin. Bu örnek her giriş satır açıkça ilk çıkış kopyaladığı ilk çıkış SynchronousInputID özelliği 0 olarak ayarlayın. Yeni oluşturulan çıktı SynchronousInputID özelliği zaten 0 olarak ayarlanır.

  5. Giriş, çıkış ve daha açıklayıcı adlar vermek yeni çıktı sütunu yeniden adlandırma. Örnek MyAddressInput giriş, MyAddressOutput ve MySummaryOutput çıkış ve MyRedmondCount ikinci çıktıyı Çıktı sütununun adı olarak kullanır.

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

  7. Oluşturma ve hedef bileşeni beklediği ilk çıkış için yapılandırma AddressID ve şehir sütun gibi bir SQL Serverhedef, ya da içinde gösterilen örnek hedef bileşeni bir hedef Script bileşeni ile oluşturma,. Dönüşümü, MyAddressOutput, ilk çıkış için hedef bileşeni bağlanın. Aşağıdakini çalıştırarak hedef tablo oluşturabilirsiniz Transact-SQLkomutunu AdventureWorks veritabanı:

    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
    )
    
  8. Oluşturup başka bir hedef bileşeni ikinci çıkış için yapılandırabilirsiniz. Dönüşümü, MySummaryOutput, ikinci çıkış için hedef bileşeni bağlanın. İkinci çıkış tek bir değer içeren tek bir satır yazdığından ile tek bir sütuna sahip yeni bir dosyaya bağlayan bir düz dosya Bağlantı Yöneticisi hedef kolayca yapılandırabilirsiniz. Örnekte, bu hedef sütun MyRedmondCount olarak adlandırılır.

  9. Örnek çalıştırın.

Public Class ScriptMain
    Inherits UserComponent

    Private myRedmondAddressCount As Integer

    Public Overrides Sub CreateNewOutputRows()

        MySummaryOutputBuffer.AddRow()

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInput(ByVal Buffer As MyAddressInputBuffer)

        While Buffer.NextRow()
            MyAddressInput_ProcessInputRow(Buffer)
        End While

        If Buffer.EndOfRowset Then
            MyAddressOutputBuffer.SetEndOfRowset()
            MySummaryOutputBuffer.MyRedmondCount = myRedmondAddressCount
            MySummaryOutputBuffer.SetEndOfRowset()
        End If

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With MyAddressOutputBuffer
            .AddRow()
            .AddressID = Row.AddressID
            .City = Row.City
        End With

        If Row.City.ToUpper = "REDMOND" Then
            myRedmondAddressCount += 1
        End If

    End Sub

End Class
Public Class ScriptMain
    Inherits UserComponent

    Private myRedmondAddressCount As Integer

    Public Overrides Sub CreateNewOutputRows()

        MySummaryOutputBuffer.AddRow()

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInput(ByVal Buffer As MyAddressInputBuffer)

        While Buffer.NextRow()
            MyAddressInput_ProcessInputRow(Buffer)
        End While

        If Buffer.EndOfRowset Then
            MyAddressOutputBuffer.SetEndOfRowset()
            MySummaryOutputBuffer.MyRedmondCount = myRedmondAddressCount
            MySummaryOutputBuffer.SetEndOfRowset()
        End If

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With MyAddressOutputBuffer
            .AddRow()
            .AddressID = Row.AddressID
            .City = Row.City
        End With

        If Row.City.ToUpper = "REDMOND" Then
            myRedmondAddressCount += 1
        End If

    End Sub

End Class
public class ScriptMain:
    UserComponent

{
    private int myRedmondAddressCount;

    public override void CreateNewOutputRows()
    {

        MySummaryOutputBuffer.AddRow();

    }

    public override void MyAddressInput_ProcessInput(MyAddressInputBuffer Buffer)
    {

        while (Buffer.NextRow())
        {
            MyAddressInput_ProcessInputRow(Buffer);
        }

        if (Buffer.EndOfRowset())
        {
            MyAddressOutputBuffer.SetEndOfRowset();
            MySummaryOutputBuffer.MyRedmondCount = myRedmondAddressCount;
            MySummaryOutputBuffer.SetEndOfRowset();
        }

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        {
            MyAddressOutputBuffer.AddRow();
            MyAddressOutputBuffer.AddressID = Row.AddressID;
            MyAddressOutputBuffer.City = Row.City;
        }

        if (Row.City.ToUpper() == "REDMOND")
        {
            myRedmondAddressCount += 1;
        }

    }

}
public class ScriptMain:
    UserComponent

{
    private int myRedmondAddressCount;

    public override void CreateNewOutputRows()
    {

        MySummaryOutputBuffer.AddRow();

    }

    public override void MyAddressInput_ProcessInput(MyAddressInputBuffer Buffer)
    {

        while (Buffer.NextRow())
        {
            MyAddressInput_ProcessInputRow(Buffer);
        }

        if (Buffer.EndOfRowset())
        {
            MyAddressOutputBuffer.SetEndOfRowset();
            MySummaryOutputBuffer.MyRedmondCount = myRedmondAddressCount;
            MySummaryOutputBuffer.SetEndOfRowset();
        }

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        {
            MyAddressOutputBuffer.AddRow();
            MyAddressOutputBuffer.AddressID = Row.AddressID;
            MyAddressOutputBuffer.City = Row.City;
        }

        if (Row.City.ToUpper() == "REDMOND")
        {
            myRedmondAddressCount += 1;
        }

    }

}
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

Zaman uyumlu ve zaman uyumsuz dönüşümleri anlama

Zaman uyumlu dönüşümü Script bileşeni ile oluşturma

Zaman uyumsuz çıkışlarına ile özel dönüşümü bileşen geliştirme