Share via


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

dönüştürme bileşeni veri akışı kullanın bir Integration Services değiştirmek ve dan geçerken, verileri çözümlemek için paket kaynak için hedef.Bileşeni geçerken her giriş satırı dönüştürme zaman uyumlu çıkışlarına ile işler.Dönüştürme ile zaman uyumsuz çıkışlarına dönüşümü giriş tüm satırlar aldı ya da tüm giriş satırları aldı önce dönüştürme belirli satırları çıktı kadar işleme tamamlamak için sonsuz bir beklemeye girebilir.Bu konuda zaman uyumsuz dönüştürme anlatılmaktadır.Bkz: zaman uyumlu dönüştürme sizin işlem gerektiriyorsa, Zaman uyumlu dönüşümü Script bileşeni ile oluşturma.Zaman uyumlu ve zaman uyumsuz bileşenleri arasındaki farklar hakkında daha fazla bilgi için bkz: Zaman uyumlu ve zaman uyumsuz dönüşümleri anlama.

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 özel bir geliştirme işlemini basitleştirmek veri akışı bileşeni.Ancak, komut dosyası bileşeni nasıl çalıştığını anlamak için bir özel veri akışı bileşeni geliştirmede izlemeniz gereken adımları aracılığıyla okumak yararlı Bir özel veri akışı Bileşen geliştirme bölümünde ve özellikle de Bir zaman uyumlu çıkışlarına ile özel dönüşümü Bileşen geliştirme.

Bir zaman uyumsuz dönüşümü 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 görüntülenirse, bileşen kaynak, dönüştürme veya hedef önceden isteyen.Bu iletişim kutusunda Dönüşüm.

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

Dönüştürme 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ı bileşeni kullanır, 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ışı dönüştürme bileşeni bir giriş vardır ve bir veya birden çok çıkış destekler.Giriş ve çıkışlar, bileşeninizi yapılandırma kullanarak meta veriler 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

Komut dosyası bileşeni kullanılarak oluşturulan dönüştürme bileşeni tek bir giriş vardır.

Üzerinde Giriş sütunları sayfa Komut dosyası dönüşümü Düzenleyicisi, ters yönde bileşen çıkış kullanılabilir sütunları sütunlar listesinden veri akışı gösterir.Geçmesine veya dönüştürmek istediğiniz sütunları seçin.Okuma/yazma olarak yerinde dönüştürmek istediğiniz sütunları işaretleyin.

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

Giriş, çıkış ve çıktı sütunları yapılandırma

dönüştürme bileşeni bir veya birden çok çıkış destekler.

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

Üzerinde girdileri ve çıktıları sayfa Komut dosyası dönüşümü Düzenleyicisi, varsayılan olarak tek bir çıkış oluşturuldu, ancak hiçbir çıktı sütunları oluşturulan bakın.Bu sayfa Editörü, aşağıdaki öğeleri yapılandırabilirsiniz:

  • Bir veya daha fazla ek çıkışlar, gibi bir toplama sonucu için bir çıktı oluşturmak isteyebilirsiniz.Kullanım Eklemek çıktı ve Kaldırmak çıktı bilgisayarınızın zaman uyumsuz dönüştürme bileşen çıkışlarını yönetmek için düğmeler.Set SynchronousInputID özellik her çıktı sıfır çıktı basitçe ters yönde bir bileşen verileri üzerinden geçmesi veya varolan satır ve yerinde dönüştürme belirtmek içinsütun. Giriş zaman uyumsuz çıkışlarına yaptığı bu ayardır.

  • Giriş ve çıkışlar için kolay bir ad atamak isteyebilirsiniz.Komut dosyası bileşeni yazılı oluşturmak için bu adları kullanır erişimci başvurmak için giriş için kullanacağınız özellikler ve komut dosyanızı çıktısını verir.

  • Sık sık zaman uyumsuz dönüştürme için sütunlar ekler veri akışı.Zaman SynchronousInputID bir çıkış özellik sıfır, gösteren, çıkış değil sadece ters yönde bir bileşen verileri üzerinden geçmesi veya yerinde varolan satır ve sütun dönüştürme, eklemek ve yapılandırmak çıktı sütunları açıkça üzerinde çıktı.Çıktı sütunları eşlenmiş giriş sütun aynı ada sahip olması.

  • Ek bilgi içerecek şekilde 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 için taklit etme.

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ı kullanmak istediğiniz değerleri tüm varolan değişkenlerini varsa, 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 zaman uyumsuz dönüşümü bileşen

Bileşeniniz için tüm meta veriler yapılandırdıktan sonra ö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

Açtığınızda vsta IDE düzenlenebilir dönüştürme bileşen yapılandırma ve oluşturma sonra ScriptMain class görünür için yer tutucular ile kod düzenleyicisinde ProcessInputRow ve CreateNewOutputRows yöntemleri.The ScriptMain class is where you will write your custom code, and ProcessInputRow is the most important method in a transformation component.The CreateNewOutputRows method is more typically used in a source component, which is like an asynchronous transformation in that both components must create their own output rows.

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

Çalışma sırasında saat, veri akışı altyapısı çağrıları PrimeOutput yöntemnde UserComponent hangi geçersiz kılar sınıf PrimeOutput yöntem, ScriptComponent üst sınıfaThe PrimeOutput method in turn calls the CreateNewOutputRows method.

Daha sonra veri akışı altyapısı çağırır ProcessInput yönteminde 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 zaman uyumsuz dönüştürme bileşeni oluşturmayı tamamlamak için geçersiz kılınmış kullanmanız gerekir ProcessInputRow giriş arabelleği her satır veri işleme yöntemÇıkışlar için giriş zaman uyumlu olmadığı için veri satırları çıkışları için açıkça yazmalısınız.

Zaman uyumsuz dönüştürme içinde kullanabileceğiniz AddRow yöntem içinde uygun çıktı satırları eklemek için ProcessInputRow veya ProcessInput yöntemleri.Kullanmak zorunda CreateNewOutputRows yöntem.Belirli bir çıkış için tek bir satır toplama sonuçları gibi sonuçlar yazıyorsanız, çıkış satır önceden kullanarak oluşturabileceğiniz CreateNewOutputRows yöntem ve kendi değerlerini işleme tüm giriş satır var. daha sonra doldurunAncak, birden çok satır oluşturmak yararlı değildir CreateNewOutputRows yöntem, komut dosyası bileşeni yalnızca geçerli satırda bulunan bir girdi veya çıktı. kullanmanızı sağlar çünküThe CreateNewOutputRows method is more important in a source component where there are no input rows to process.

Ayrıca geçersiz kılmak isteyebilirsiniz ProcessInput yöntem kendisi, böylece ek ön veya son veya önce giriş arabelleği ve çağrı döngü sonra işlem yapmak ProcessInputRow her satır.Örneğin, bu konu başlığı altındaki kod örneklerinden birini geçersiz kılar ProcessInput sayısını belirli bir şehirdeki adresler için ProcessInputRow satır aracılığıyla döngüler. örnek Özet değeri, tüm satırlar işlenen sonra ikinci çıktıya yazar.Örnek çıktıda tamamlar ProcessInput çünkü çıktı arabelleği artık ne zaman PostExecute denir.

Gereksinimlerinize bağlı olarak, aynı zamanda komut dosyası yazmak isteyebilirsiniz PreExecute ve PostExecute yöntemlerini de ScriptMain class gerçekleştirilecek tüm ön veya son işlem.

Not

Sıfırdan bir özel veri akışı Bileşen geliştirme, geçersiz kılmak önemli olacaktır PrimeOutput yöntem için daha sonra arabellek veri satırları ekleyebilirsiniz böylece çıktı arabelleği için başvuruları önbelleğe.Her çıkış arabellekte temsil eden otomatik olarak oluşturulmuş bir sınıf olduğundan komut dosyası bileşeni, bu gerekli değildir BufferWrapper Proje öğe.

Örnek

Bu örnek, gereken özel kod göstermektedir ScriptMain sınıf oluşturma bir zaman uyumsuz dönüştürme 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.

Bu örnek, bir zaman uyumsuz dönüştürme bileşeni ile iki çıkışları gösterir.Bu dönüştürme geçtiği AddressID ve City sütun için bir çıkış, sırada bulunan (Redmond, Washington, ABD), belirli bir şehirdeki adresler sayısını sayar ve sonra elde edilen değere çıktısını veririkinci bir çıktı.

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

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

  2. Bir kaynak veya başka bir dönüşümünün çıktı yeni dönüştürme bileşen tasarımcısında bağlanın.Bu çıkış verileri sağlamanız gerekir Person.Address tablo , AdventureWorks2008R2 örnek veritabanını içeren en az AddressID ve City sütunlar.

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

  4. Üzerinde girdileri ve çıktıları sayfa, ekleme ve yapılandırma AddressID ve City çıktı sütunları birinci çıktı.İkinci bir çıkış ve bir çıkış ekleyin sütun ikinci çıktı üzerinde Özet değer için.Bu örnek giriş her satır için ilk çıkış açıkça kopyaladığı için ilk çıktı SynchronousInputID özellik 0 olarak ayarlayın.SynchronousInputID özellik, yeni oluşturulan çıktının zaten 0 olarak küme.

  5. Yeni çıkış giriş ve çıkışlarına yeniden adlandırma sütun daha açıklayıcı adlar vermek.Örnek adı MyAddressOutput ve çıktıları için MySummaryOutput ve MyRedmondCount çıktı için giriş olarak MyAddressInput kullanır sütun , ikinci çıktı.

  6. Üzerinde Script sayfa,'ı Komut dosyasını düzenle ve izleyen komut dosyası girin.Komut dosyası geliştirme ortamı kapatın ve Komut dosyası dönüşümü Düzenleyicisi.

  7. Oluşturmak ve yapılandırmak için bekler ilk çıkış bir hedef bileşeni AddressID ve City sütunlar gibi bir SQL Server hedef, ya da içinde gösterilen örnek hedef bileşeni bir hedef Script bileşeni ile oluşturma,.Sonra ilk çıkışını bağlanmak dönüştürme, MyAddressOutput, hedef bileşeni için.Aşağıdakini çalıştırarak, hedef tablo oluşturabilirsiniz Transact-SQL komutunu AdventureWorks2008R2 Veritabanı:

    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.Sonra ikinci çıkışını bağlanmak dönüştürme, MySummaryOutput, hedef bileşeni için.İkinci çıkış tek bir satırda tek bir değer yazdığından, kolayca bir hedef olan tek bir yeni bir dosyaya bağlayan bir düz dosya Bağlantı Yöneticisi ile yapılandırabilirsiniz sütun.Ö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:
    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ü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.