Aracılığıyla paylaş


Bir kaynak Script bileşeni ile oluşturma

Bir kaynak bileşeni kullanmak veri akışı , bir Integration Services aşağı akım Dönüşümleri ve geçirmek için bir veri kaynağı yüklemek için pakethedefleri. Verilere bağlanmak normalde kaynak varolan bir Bağlantı Yöneticisi aracılığıyla.

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 özel bir geliştirme söz konusu adımları boyunca okumak yararlı veri akışı bileşeni.Bölümüne bakın Bir özel veri akışı Bileşen geliştirme, özellikle bu konuda Özel kaynak Bileşen geliştirme.

Bir kaynak 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 veya dönüştürme komut dosyası seçmenizi ister.Bu iletişim kutusunda kaynak.

Meta veri Tasarım modunda bir kaynak bileşeni yapılandırma

Kaynak bileşen oluşturmak için 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.

A veri akışı kaynak bileşen giriş vardır ve bir veya birden çok çıkış destekler.Çı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.

Komut dosyası dili ayarlayarak da belirtebilirsiniz ScriptLanguage özellik Script sayfa Komut dosyası dönüşümü Düzenleyicisi.

Not

İçin küme komut dosyası bileşenleri ve komut dosyası görevleri, kullanım için varsayılan komut dosyası dili komut dosyası dili üzerinde seçenek Genel sayfa seçenekleri iletişim kutusu.Daha fazla bilgi için bkz: Genel sayfası.

Bağlantı yöneticileri ekleme

Normalde bir kaynak bileşeni veri kaynağı yükler veri kaynağına bağlanmak için varolan bir Bağlantı Yöneticisi kullanır veri akışı.Üzerinde Bağlantı yöneticileri sayfa Komut dosyası dönüşümü Düzenleyicisi,'ı Ekle uygun bağlantı Yöneticisi eklemek için.

Ancak, bir Bağlantı Yöneticisi, Kapsüller ve bir verilere bağlanmak için gereken bilgileri depolar yalnızca bir kullanışlı birimdir kaynak belli türde.Kendi özel yüklemek için kod veya veri kaydetme ve büyük olasılıkla açık ve kapalı için veri bağlantısı kaynak da yazmanız gerekir.

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

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

Kaynak bileşen giriş vardır ve bir veya birden çok çıkış destekler.Üzerinde girdileri ve çıktıları sayfa Komut dosyası dönüşümü Düzenleyicisi, tek bir çıkışı varsayılan olarak oluşturuldu, ancak hiçbir çıktı sütunları oluşturulan.Bu sayfa Editörü, ihtiyaç duyabileceğiniz veya aşağıdaki öğeleri yapılandırmak istiyor.

  • Ekleme ve çıktı sütunları her çıkış için el ile yapılandırmanız gerekir.Her çıkış için çıktı sütunu klasörü seçin ve ardından Sütun Ekle ve Sütun kaldırma çıktı sütunları her çıkış kaynak bileşeni yönetmek için düğmeler.Daha sonra çıktı sütunu için komut dosyanızda burada yazılı kullanarak atadığınız adları tarafından başvuruda bulunacak erişimci sizin için otomatik olarak oluşturulan kodda oluşturulan özellikler.

  • Bir veya daha fazla ek çıkışlar, gibi bir benzetimli hatası çıktı beklenmeyen değerler içeren satırları için oluşturmak isteyebilirsiniz.Kullanım Eklemek çıktı ve Çıkış kaldırma kaynak bileşen çıkışlarını yönetmek için düğmeler.İçin özdeş bir sıfır olmayan değer belirtilmedikçe tüm giriş satırları için kullanılabilir tüm çıktıları yönlendirilmiş ExclusionGroup özellik, burada her satır aynı paylaşmak çıkışları birine doğrudan düşündüğünüz bu çıkışlarını ExclusionGroup değer.Seçili belirli tamsayı değeri tanımlamak için ExclusionGroup Önemli değil.

    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.Bu durum, ancak, açıkça çağırmanız gerekir DirectRowTo<outputbuffer> yöntem çıktı. göndermek istediğiniz her satır için

  • Çıkışlar için kolay bir ad atamak isteyebilirsiniz.Daha sonra çıkışlar için adlarına göre komut dosyanızda, yazılı kullanarak başvuruda bulunacak erişimci sizin için otomatik olarak oluşturulan kodda oluşturulan özellikler.

  • Normalde çok aynı şekilde verir ExclusionGroup sahip aynı çıktı sütunları.Ancak, benzetimli hatası çıktı oluşturuyorsanız, hata bilgilerini depolamak için 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şeni ancak, ek sütunlar ile ilgili hata bilgileri doldurmak üzere kendi kodunuzu yazmalısınız.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.

Özellik alanlarında çok sayıda değişken girdiğinizde, değişken adları noktalı virgülle ayırın.Üç nokta tıklatarak birden çok değişken girebilirsiniz () yanındaki düğme ReadOnlyVariables ve ReadWriteVariables özellik alanları ve seçme değişkenleri 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 kaynak bileşeni

After you have configured the metadata for your component, open the Microsoft Visual Studio Tools for Applications (VSTA) IDE to code your custom script.vsta açmak için tıklatın Komut dosyasını düzenle üzerinde Script sayfa Komut dosyası dönüşümü Düzenleyicisi.You can write your script by using either Microsoft Visual Basic 2008 or Microsoft Visual C# 2008, depending on the script language selected for the ScriptLanguage property.

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 kaynak bileşen yapılandırma ve oluşturma sonra ScriptMain class göründüğü Kod Düzenleyicisi'ni kapatın.Özel kod yazma ScriptMain WalkTree

The ScriptMain class includes a stub for the CreateNewOutputRows method.The CreateNewOutputRows is the most important method in a source 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 UserComponent class in the ComponentWrapper project item.

Çalışma sırasında saat, veri akışı altyapısı çağırır 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 following methods:

  1. The CreateNewOutputRows method, which you override in ScriptMain to add rows from the data source to the output buffers, which are empty at first.

  2. The FinishOutputs method, which is empty by default.Bu geçersiz kıl yöntem , ScriptMain tamamlamak için gerekli işlemleri gerçekleştirmek içinçıktı.

  3. Özel MarkOutputsAsFinished yöntem çağırır, SetEndOfRowset yöntem, ScriptBuffer üst sınıf için veri akışı altyapısı çıktı tamamlandığını belirtmek için.Çağrısı yapmak zorunda SetEndOfRowset açık bir biçimde kendi kodu.

Özel kod yazma

Özel kaynak bileşeni oluşturmayı tamamlamak için aşağıdaki yöntemleri kullanılabilir, komut dosyası yazmak isteyebilirsiniz ScriptMain WalkTree

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

  2. Geçersiz kılma PreExecute aynı kaynak verileri yüklerseniz, veri yüklemek için yöntem saat.Örneğin, yürütmek bir SqlCommand karşı bir ADO.NET bağlantı için bir SQL Server veritabanı ve aynı kaynak verileri yüklemek saat içine bir SqlDataReader.Kaynak veriler bir satır sonunda yüklemeniz gerekir bir saat (bir metin dosyası okunurken, örneğin), satır döngü gibi verileri yükleyebilirsiniz CreateNewOutputRows.

  3. Geçersiz kılınmış kullanmak CreateNewOutputRows yöntem boş çıktı arabelleği için yeni satırlar eklemek ve her birinin değerleri doldurmak için sütun yeni satırlar. çıkışUse AddRow yöntem her çıkış arabelleği boş bir yeni satır eklemek için ve sonra küme değerleri her sütun.Genellikle değerler dışarıdan yüklenen sütunları kopyaladığınız kaynak.

  4. Geçersiz kılma PostExecute yöntem veri işlemini bitirmek için.Örneğin, kapatmak SqlDataReader , kullanılan yük veri.

  5. Geçersiz kılma ReleaseConnections harici veri bağlantısını kesmek için yöntem kaynak, gerekirse.

Örnekler

Aşağıdaki örnekler, gereken özel kod göstermektedir ScriptMain sınıf oluşturma bir kaynak 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.

ADO.net kaynak örneği

Bu örnek, varolan bir kullanan bir kaynak bileşeni gösterir ADO.NET Bağlantı Yöneticisi veri yüklemek için bir SQL Server tablo içine veri akışı.

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

  1. Oluşturma bir ADO.NET kullandığı Bağlantı Yöneticisi'ni SqlClient bağlanmak için sağlayıcı AdventureWorks2008R2 veritabanı.

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

  3. Açık Komut dosyası dönüşümü Düzenleyicisi.Üzerinde girdileri ve çıktıları sayfa, varsayılan çıktı, MyAddressOutput gibi daha açıklayıcı bir ad ile ve ekleyip iki çıktı sütunları yapılandırma adlandırma AddressID ve City.

  4. Üzerinde Bağlantı yöneticileri sayfa, eklemek veya oluşturmak ADO.NET Bağlantı Yöneticisi MyADONETConnection. gibi bir ad verin ve

  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 bir hedef bileşeni gibi yapılandırmak bir SQL Server hedef, ya da içinde gösterilen örnek hedef bileşeni bir hedef Script bileşeni ile oluşturma, bekler, AddressID ve City sütunlar.Sonra hedef kaynak bileşeni bağlanın.(Bağlanabileceğiniz bir kaynak bir hedef herhangi bir dönüştürme olmadan.) 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.

    Imports System.Data.SqlClient
    ...
    Public Class ScriptMain
        Inherits UserComponent
    
        Dim connMgr As IDTSConnectionManager100
        Dim sqlConn As SqlConnection
        Dim sqlReader As SqlDataReader
    
        Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
    
            connMgr = Me.Connections.MyADONETConnection
            sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection)
    
        End Sub
    
        Public Overrides Sub PreExecute()
    
            Dim cmd As New SqlCommand("SELECT AddressID, City, StateProvinceID FROM Person.Address", sqlConn)
            sqlReader = cmd.ExecuteReader
    
        End Sub
    
        Public Overrides Sub CreateNewOutputRows()
    
            Do While sqlReader.Read
                With MyAddressOutputBuffer
                    .AddRow()
                    .AddressID = sqlReader.GetInt32(0)
                    .City = sqlReader.GetString(1)
                End With
            Loop
    
        End Sub
    
        Public Overrides Sub PostExecute()
    
            sqlReader.Close()
    
        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;
        SqlDataReader sqlReader;
    
        public override void AcquireConnections(object Transaction)
        {
            connMgr = this.Connections.MyADONETConnectionManager;
            sqlConn = (SqlConnection)connMgr.AcquireConnection(null);
    
        }
    
        public override void PreExecute()
        {
    
            SqlCommand cmd = new SqlCommand("SELECT AddressID, City, StateProvinceID FROM Person.Address", sqlConn);
            sqlReader = cmd.ExecuteReader();
    
        }
    
        public override void CreateNewOutputRows()
        {
    
            while (sqlReader.Read())
            {
                {
                    MyAddressOutputBuffer.AddRow();
                    MyAddressOutputBuffer.AddressID = sqlReader.GetInt32(0);
                    MyAddressOutputBuffer.City = sqlReader.GetString(1);
                }
            }
    
        }
    
        public override void PostExecute()
        {
    
            sqlReader.Close();
    
        }
    
        public override void ReleaseConnections()
        {
    
            connMgr.ReleaseConnection(sqlConn);
    
        }
    
    }
    

Düz dosya kaynağı örneği

Bu örnek, varolan bir düz dosya Bağlantı Yöneticisi veri düz bir dosyadan yüklemek için kullandığı bir kaynak bileşeni gösterir veri akışı.Düz dosya kaynak veriler buradan vererek oluşturulan SQL Server.

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

  1. Use SQL Server vermek için alma ve Verme Sihirbazı'nı Person.Address gelen tablo AdventureWorks2008R2 örnek veritabanı için bir virgülle ayrılmış düz dosya.Bu örnek, ExportedAddresses.txt dosya adını kullanır.

  2. Düz dosya oluşturmanız bağlantı yöneticisi dışa aktarılan veri dosyasına bağlanır.

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

  4. Açık Komut dosyası dönüşümü Düzenleyicisi.Üzerinde girdileri ve çıktıları sayfa, varsayılan çıkış MyAddressOutput gibi daha tanımlayıcı bir adla yeniden adlandırın.Ekleme ve iki çıktı sütunları yapılandırma AddressID ve City.

  5. Üzerinde Bağlantı yöneticileri sayfa, eklemek veya düz dosya Bağlantı Yöneticisi MyFlatFileSrcConnectionManager gibi açıklayıcı bir ad kullanarak oluşturun.

  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 bir hedef bileşeni gibi yapılandırmak bir SQL Server hedef, ya da içinde gösterilen örnek hedef bileşeni bir hedef Script bileşeni ile oluşturma.Sonra hedef kaynak bileşeni bağlanın.(Bağlanabileceğiniz bir kaynak bir hedef herhangi bir dönüştürme olmadan.) 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. Örnek çalıştırın.

    Imports System.IO
    ...
    Public Class ScriptMain
        Inherits UserComponent
    
        Private textReader As StreamReader
        Private exportedAddressFile As String
    
        Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
    
            Dim connMgr As IDTSConnectionManager100 = _
                Me.Connections.MyFlatFileSrcConnectionManager
            exportedAddressFile = _
                CType(connMgr.AcquireConnection(Nothing), String)
    
        End Sub
    
        Public Overrides Sub PreExecute()
            MyBase.PreExecute()
            textReader = New StreamReader(exportedAddressFile)
        End Sub
    
        Public Overrides Sub CreateNewOutputRows()
    
            Dim nextLine As String
            Dim columns As String()
    
            Dim delimiters As Char()
            delimiters = ",".ToCharArray
    
            nextLine = textReader.ReadLine
            Do While nextLine IsNot Nothing
                columns = nextLine.Split(delimiters)
                With MyAddressOutputBuffer
                    .AddRow()
                    .AddressID = columns(0)
                    .City = columns(3)
                End With
                nextLine = textReader.ReadLine
            Loop
    
        End Sub
    
        Public Overrides Sub PostExecute()
            MyBase.PostExecute()
            textReader.Close()
    
        End Sub
    
    End Class
    
    using System.IO;
    public class ScriptMain:
        UserComponent
    
    {
        private StreamReader textReader;
        private string exportedAddressFile;
    
        public override void AcquireConnections(object Transaction)
        {
    
            IDTSConnectionManager100 connMgr = this.Connections.MyFlatFileSrcConnectionManager;
            exportedAddressFile = (string)connMgr.AcquireConnection(null);
    
        }
    
        public override void PreExecute()
        {
            base.PreExecute();
            textReader = new StreamReader(exportedAddressFile);
        }
    
        public override void CreateNewOutputRows()
        {
    
            string nextLine;
            string[] columns;
    
            char[] delimiters;
            delimiters = ",".ToCharArray();
    
            nextLine = textReader.ReadLine();
            while (nextLine != null)
            {
                columns = nextLine.Split(delimiters);
                {
                    MyAddressOutputBuffer.AddRow();
                    MyAddressOutputBuffer.AddressID = columns[0];
                    MyAddressOutputBuffer.City = columns[3];
                }
                nextLine = textReader.ReadLine();
            }
    
        }
    
        public override void PostExecute()
        {
    
            base.PostExecute();
            textReader.Close();
    
        }
    
    }
    
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.