Share via


Zaman uyumlu 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.Bir ile zaman uyumsuz çıkışlarına dönüştürme işleme tamamlamak için tüm giriş satırları aldı kadar bekler.Bu konuda zaman uyumlu dönüştürme anlatılmaktadır.Zaman uyumsuz dönüşümleri hakkında daha fazla bilgi için bkz: Zaman uyumsuz bir 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 önemli ölçüde ö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 bölümünde geliştirmede izlemeniz gereken adımları okumak yararlı Bir özel veri akışı Bileşen geliştirmeve özellikle de Bir zaman uyumlu çıkışlarına ile özel dönüşümü Bileşen geliştirme.

Zaman uyumlu dönüşümü bileşeni ile Başlarken

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

Meta veri Tasarım modunda bir zaman uyumlu 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.

İçin küme komut dosyası bileşeni için bir komut dosyası dilini, küme ScriptLanguage özellik Script sayfa Komut dosyası dönüşümü Düzenleyicisi.

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

Giriş sütunlar yapılandırma

dönüştürme bileşeni 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ütun 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.

Üzerinde girdileri ve çıktıları sayfa Komut dosyası dönüşümü Düzenleyicisi, tek bir çıktı oluşturulur, ancak çıktı sütun bulunmuyor görebilirsiniz.Bu sayfa Editörü, ihtiyaç duyabileceğiniz veya aşağıdaki öğeleri yapılandırmak istiyor.

  • Bir veya daha fazla ek çıkışlar, bir beklenmeyen değerler içeren satırları için benzetimli hatası çıktı gibi oluşturun.Kullanım Çıktı ekleme ve Kaldırmak çıktı yaptığınız zaman uyumlu dönüştürme bileşen çıkışlarını yönetmek için düğmeler.Her satır bir çıkış veya diğer yönlendirmek düşündüğünüz göstermek sürece tüm giriş satırları için kullanılabilir tüm çıktıları yönlendirilir.Satırlar için sıfır olmayan tamsayı bir değer belirterek yeniden yönlendirmek istediğiniz belirtmek ExclusionGroup özellik çıkış verir.Girilen belirli tamsayı değeri ExclusionGroup çıkışlarını tanıtmak için önemli değildir, ancak aynı tamsayı belirtilen grup için tutarlı bir şekilde kullanmanız gerekirçıkışlarına.

    Not

    Sıfır olmayan de kullanabilirsiniz ExclusionGroup özellik değeri ile tek bir çıkış yaparken değil istediğiniz çıktı tüm satırlar.Ancak, durum, açıkça çağırması gerekir DirectRowTo<outputbuffer> yöntem çıktı. göndermek istediğiniz her satır için

  • Giriş ve çıkışlar daha açıklayıcı bir ad atayın.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.

  • Zaman uyumlu dönüştürmeleri için olduğu gibi sütun bırakın.Genellikle zaman uyumlu dönüştürme sütun eklemez veri akışı.Veri arabelleği yerinde değiştirilmiş ve arabellek için sonraki veri akışı bileşeni geçirilen.Bu ise durum, eklemek ve çıktı sütunları açıkça üzerinde 's dönüştürme çıkışlarına yapılandırmak gerekmez.Çıkışları düzenleyen açıkça tanımlanmış sütunlar olmadan görünür.

  • Satır düzey hatalar için benzetimli hata çıkışlarına yeni sütunlar ekleyebilir.Normalde çok aynı şekilde verir ExclusionGroup aynı olduğu küme çıktı sütunları.Ancak, benzetimli hatası çıktı oluşturuyorsanız, hata bilgilerini içerecek şekilde daha fazla sütun eklemek isteyebilirsiniz.Nasıl hakkında bilgi için veri akışı altyapısı işlemleri hata satırları görmek Bir veri akışı bileşeni hata çıkışları kullanarak.Komut dosyası bileşen ek sütunlar ile ilgili hata bilgileri doldurmak üzere kendi kodunuzu yazmalısınız unutmayın.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ı 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 zaman uyumlu dönüşümü 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 dönüştürme bileşen yapılandırma açtığınızda ScriptMain class 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 transformation 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 the 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

Bir zaman uyumlu çıkışlarına dönüştürme bileşeni yazmak için tüm veri akışı bileşenleri en basit olanıdır.Örneğin, aşağıdaki özel kod bu konunun ilerleyen bölümlerinde gösterilen tek çıkış örnek oluşur:

    Row.City = UCase(Row.City)
    Row.City = (Row.City).ToUpper();

Özel zaman uyumlu dönüştürme bileşeni oluşturmayı tamamlamak için geçersiz kılınmış kullanmanız ProcessInputRow yöntem giriş arabellek satırların her birindeki verileri dönüştürmek için.Veri akışı altyapısı bu arabellek dolduğunda sonraki veri akışı bileşen geçirir.

Gereksinimlerinize bağlı olarak, aynı zamanda komut dosyası yazmak isteyebilirsiniz PreExecute ve PostExecute yöntemleri, kullanılabilir ScriptMain sınıfı, gerçekleştirilecek ön veya son işlem.

Birden fazla çıkışı ile çalışma

İki veya daha fazla olası çıkışlar için giriş satırları suna yukarıda açıklanan tek çıkış senaryo daha çok daha fazla özel kod gerektirmez.Örneğin, bu konunun ilerleyen bölümlerinde gösterilen çıktı iki örnek aşağıdaki özel kod oluşur:

    Row.City = UCase(Row.City)
    If Row.City = "REDMOND" Then
        Row.DirectRowToMyRedmondAddresses()
    Else
        Row.DirectRowToMyOtherAddresses()
    End If
        Row.City = (Row.City).ToUpper();

        if (Row.City=="REDMOND")
        {
            Row.DirectRowToMyRedmondAddresses();
        }
        else
        {
            Row.DirectRowToMyOtherAddresses();
        }

Bu örnekte komut dosyası bileşeni oluşturur DirectRowTo<OutputBufferX> yöntemleri sizin yapılandırdığınız çıkışları adları temel.Benzetimli hatası çıktı hata satır yönlendirmek için benzer bir kod kullanabilirsiniz.

Örnekler

Gerekli olan özel kod örnekleri burada göstermek ScriptMain sınıf oluşturma bir zaman uyumlu 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.

Tek Çıkış zaman uyumlu dönüştürme örneği

Bu örnek, bir tek bir çıktı ile zaman uyumlu dönüştürme bileşeni gösterir.Bu dönüştürme geçtiği AddressID sütun ve dönüştürür City sütun büyük.

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 bağlanmak SSIS Tasarımcısı.Bu çıkış verileri sağlamanız gerekir Person.Address tablo , AdventureWorks2008R2 içeren örnek veritabanı 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.İşareti City sütun olarak okuma / yazma.

  4. Üzerinde girdileri ve çıktıları sayfa, giriş yeniden adlandırın ve MyAddressInput ve MyAddressOutput gibi daha açıklayıcı adları ile çıktı.Dikkat SynchronousInputID çıkışını karşılık gelen ID Giriş.Bu nedenle, ekleme ve çıktı sütunları yapılandırma gerekmez.

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

  6. Oluşturmak ve beklediği bir hedef bileşeni yapılandırmak 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 çıkışını bağlanmak dönüştürme 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
    )
    
  7. Örnek çalıştırın.

Public Class ScriptMain
    Inherits UserComponent

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        Row.City = UCase(Row.City)

    End Sub

End Class
public class ScriptMain:
    UserComponent

{
    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        Row.City = (Row.City).ToUpper();

    }

}

Zaman uyumlu dönüşümü örnek iki çıkış

Bu örnek, bir zaman uyumlu dönüştürme bileşeni ile iki çıkışları gösterir.Bu dönüştürme geçtiği AddressID sütun ve dönüştürür City sütun büyük.İstanbul şehir adı, bir çıkış satıra yönlendirir; onu diğer tüm satırları başka bir çıkış için yönlendirir.

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 bağlanmak SSIS Tasarımcısı.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.İşareti City sütun olarak okuma / yazma.

  4. Üzerinde girdileri ve çıktıları sayfa, ikinci bir çýktý yaratmak.Yeni çıkış ekledikten sonra emin olun, küme , SynchronousInputID için ID Giriş.Bu özellik varsayılan olarak oluşturulan ilk çıktıyı zaten küme.Her çıktı, küme ExclusionGroup özellik için aynı sıfır olmayan bir değer belirtmek emin böldüğünüz giriş satırları arasında iki dışlayan çıkışlarına.Çıkışlar için herhangi bir çıktı sütunu eklemek zorunda değil.

  5. Giriş ve çıkışlarını MyAddressInput, MyRedmondAddresses ve MyOtherAddresses gibi daha tanımlayıcı adlarıyla yeniden adlandırın.

  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şturun ve beklediğiniz iki hedef bileşeni yapılandırmak AddressID ve City sütunlar gibi bir SQL Server hedef, bir düz dosya hedef veya örnek hedef bileşeni olarak gösterilen bir hedef Script bileşeni ile oluşturma.Sonra her dönüştürme çıkışlarına hedef bileşenleri bağlanın.Çalıştırarak, hedef tablolar oluşturabilirsiniz bir Transact-SQL (ile benzersiz tablo adları) aşağıdaki benzer komut AdventureWorks2008R2 Veritabanı:

    CREATE TABLE [Person].[Address2](
        [AddressID] [int] NOT NULL,
        [City] [nvarchar](30) NOT NULL
    
  8. Örnek çalıştırın.

Public Class ScriptMain
    Inherits UserComponent

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        Row.City = UCase(Row.City)

        If Row.City = "REDMOND" Then
            Row.DirectRowToMyRedmondAddresses()
        Else
            Row.DirectRowToMyOtherAddresses()
        End If

    End Sub

End Class
public class ScriptMain:
    UserComponent

public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        Row.City = (Row.City).ToUpper();

        if (Row.City == "REDMOND")
        {
            Row.DirectRowToMyRedmondAddresses();
        }
        else
        {
            Row.DirectRowToMyOtherAddresses();
        }

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