Aracılığıyla paylaş


Bir kaynak komut dosyası bileşeni ile oluşturma

Bir kaynak bileşenini kullanan veri akışı, bir Integration Services Paket, akış yönündeki dönüştürmeler ve hedefleri geçirmek için bir veri kaynağından veri yüklenemedi. Normalde, verilere bağlanmak 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şen geliştirmede ilgili adımlarda okumak yararlı.Bkz: Özel veri akışı bileşen geliştirme, özellikle konu Özel bir kaynak bileşen geliştirme.

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

Bir komut dosyası bileşeni eklediğinizde veri akışı bölmesi SSIS Tasarımcı, Komut dosyası bileşeni türünü seçin. iletişim kutusu açılır ve komut dosyası kaynak, hedef veya dönüştürme seçmenizi ister.Bu iletişim kutusunda seçin. Kaynak.

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

Bir kaynak bileşen oluşturmak için seçtikten sonra bileşen kullanarak yapılandırdığınız 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.

Veri akışı kaynak yok bir giriş vardır ve bir veya daha fazla çıkış'ı destekler.Bileşen kullanarak meta veriler tasarım modunda, tamamlamanız gereken adımlardan biri için çıkışlarını yapılandırma Komut dosyası dönüştürme Düzenleyicisiözel komut dosyanızı yazmak için önce.

Ayarlayarak komut dosyası dilini belirtebilirsiniz ScriptLanguage özellikKomut dosyası sayfaKomut dosyası dönüştürme Düzenleyicisi.

Not

komut dosyası kullanan kullanan dosyası kullanan bileşenleri ve komut dosyası kullanan kullanan dosyası kullanan görevleri için varsayılan komut dosyası kullanan kullanan dosyası kullanan dilini 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.

Bağlantı Yöneticisi'ni ekleme

Normalde verileri yükler veri kaynağına bağlanmak için varolan bir Bağlantı Yöneticisi bir kaynak bileşenini kullanan veri akışı.Ü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 verilere bağlantıyı kapatmak için kaynak de.

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

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

Bir kaynak bileşeni yok bir giriş vardır ve bir veya daha fazla çıkış'ı destekler.Üzerinde Giriş ve çıkışlarını sayfaKomut dosyası dönüştürme Düzenleyicisi, varsayılan olarak tek bir çıktı oluşturuldu, ancak hiçbir çıktı sütunu oluşturuldu.Bu sayfada düzenleyicisinin, gerekli olabilir veya aşağıdaki öğeleri yapılandırmak istediğiniz.

  • Eklemeli ve çıktı sütunu her çıktı el ile yapılandırın.Her çıktı için çıktı sütunları klasörü seçin ve sonra Sütun Ekle and Sütunu Kaldır düğmeleri çıktı sütunu için Kaynak bileşeninin her bir çıkış'ı yönetmek için.Daha sonra sizin için otomatik oluşturulan kodda oluşturulan yazılı erişimci özelliklerini kullanarak burada atadığınız adları olarak komut dosyanız çıktı sütunları başvuracaktır.

  • Bir veya daha çok ek çıkışlarını, gibi bir benzetimli hata çıktı beklenmeyen değerler içeren satırları için oluşturmak isteyebilirsiniz.Use Çıktı ekleme and Çıkış'ı kaldırma düğmeleri Kaynak bileşeninin çıkışlarını yönetmek için.Için özdeş bir sıfır olmayan değer belirlemezseniz, tüm giriş satır için tüm kullanılabilir çıkış yönlendirilir ExclusionGroup Her satır için aynı paylaşan çıkışlarını yalnızca biri doğrudan düşünüyorsanız bu çıkışlarını özellik ExclusionGroup değer. Belirli bir tamsayı değeri tanımlamak için seçili ExclusionGroup önemli değildir.

    Not

    Sıfır olmayan bir de kullanılabilir ExclusionGroup özellik değeri içeren tüm satırların çıktısını istiyorsanız, tek bir çıktı. Bu durumda, ancak, açıkça çağırmalısınız DirectRowTo<outputbuffer> Çıkışı göndermek istediğiniz her satır için yöntem.

  • Bir kolay ad için çıktıların atamak isteyebilirsiniz.Daha sonra sizin için çıktıların adlarıyla komut dosyasýnda, sizin için otomatik oluşturulan kodda oluşturulan yazılı erişimci özelliklerini kullanarak başvuracaktır.

  • Genellikle birden çok aynı verir ExclusionGroup aynı çıktı sütunu vardır. Ancak, bir benzetimli hata çıktı oluşturuyorsanız, hata bilgilerini depolamak için başka bir sütun eklemek isteyebilirsiniz.Verileri, altyapı işlemleri hata sıraları nasıl gerçekleştiğini hakkında daha fazla bilgi için bkz: Bir veri akışı bileşeni'nde hata çıkışlarını kullanma. Ancak komut dosyası bileşen, ek sütunlar ile ilgili hata bilgileri doldurmak için kendi kodunuzu yazmalıdır.Daha fazla bilgi için bkz:Komut dosyası bileşeni için bir hata çıktı benzetme.

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

Komut dosyanızda kullanmak istediğiniz değerleri tüm varolan değişkenlerini varsa, bunları ekleyebileceğiniz ReadOnlyVariables ve ReadWriteVariables üzerinde özellik alanları Komut dosyası sayfaKomut dosyası dönüştürme Düzenleyicisi.

Özellik alanları birden çok değişken girdiğinizde, değişken adları virgülle ayırın.Üç nokta (tıklatarak birden çok değişken girebilirsiniz**…**) düğmesiniReadOnlyVariables ve ReadWriteVariables özellik alanlarını ve seçme değişkenleri 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 kaynağı bileşeni komut dosyası kullanan kullanan dosyası kullanan

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ı Düzenle on the Komut dosyası sayfaKomut dosyası dönüştürme 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.

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 IDE oluşturma ve kaynak bileşeni, düzenlenebilir yapılandırma açtığınızda ScriptMain sınıf kod düzenleyicisinde görünür. Özel kod yazma ScriptMain sınıf.

The ScriptMain class includes a stub for the CreateNewOutputRows yöntem. The CreateNewOutputRows is the most important yöntem in a kaynak 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 PrimeOutput yöntemde UserComponent sınıf, hangi geçersiz kılmaları PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) yöntem ScriptComponent üst sınıf. The PrimeOutput yöntem in turn calls the following methods:

  1. The CreateNewOutputRows yöntem, which you override in ScriptMain to add rows from the data kaynak to the output buffers, which are empty at first.

  2. The FinishOutputs yöntem, which is empty by default. Bu yöntemde geçersiz kılar. ScriptMain Çıktı tamamlamak için herhangi bir işlem gerçekleştirmek için gerekli.

  3. Özel MarkOutputsAsFinished yöntem çaðýrýr SetEndOfRowset() yöntem ScriptBuffer üst sınıf veri akışı alt yapısına çıktı tamamlandığını gösterir. Call gerekmez SetEndOfRowset açıkça kendi kodu.

Kendi özel kod yazma

Özel kaynak 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 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ı bir SQL Server Veritabanı ve tüm kaynak verileri aynı anda yüklemek saat içine bir SqlDataReader. Kaynak veri bir satırdan adresindeki yüklemeniz gerekir, bir saat satırları döngü gibi (örneğin bir metin dosyasını okurken), verileri yükleyebilirsiniz CreateNewOutputRows.

  3. Geçersiz kılınmış kullanın. CreateNewOutputRows boş bir çıktı arabelleği için yeni satırlar eklemek ve her sütunda yeni bir çıkış satırların değerlerini doldurmak için yöntem. Use AddRow boş bir yeni satır eklemek için her çıktı arabelleği yöntem ve sonra küme her sütun değerlerinin. Genellikle, değerleri dış yüklenen sütunlarından kopyalayın kaynak.

  4. Geçersiz kılma PostExecute verileri işlemini bitirmek için yöntem. Örneğin, kapatma SqlDataReader verileri yüklemek için kullandığınız.

  5. Geçersiz kılma ReleaseConnections Dış verileri bağlantısını kesmek için yöntem kaynak, gerekli.

Örnekler

Aşağıdaki örnekler, gereken özel kod göstermektedir ScriptMain bir kaynak 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 kaynak örneği

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

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. Yeni bir komut dosyası bileşeni için veri akışı Tasarımcısı yüzey ekleyin ve olarak yapılandırma bir kaynak.

  3. Açık Komut dosyası dönüştürme Düzenleyicisi.Üzerinde Giriş ve çıkışlarını sayfa, varsayılan çıktı gibi daha tanımlayıcı bir adla yeniden adlandırın.MyAddressOutput iki çıktı sütunları, yapılandırmak ve eklemeAddressID and Şehir.

  4. Üzerinde Bağlantı Yöneticisi sayfa ekleme veya oluşturmaADO.NET Bağlantı Yöneticisi ve bu gibi bir ad verin MyADONETConnection.

  5. Ü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 ve Komut dosyası dönüştürme Düzenleyicisi.

  6. Oluşturma ve bir hedef bileşeni gibi yapılandırma bir SQL Server Hedef veya hedef bileşeni içinde gösterilen örnek Hedef komut dosyası bileşeni ile oluşturmaBekleyen AddressID and Şehir sütunlar.Sonra kaynak bileşeni, hedef bağlayacak.(Bir kaynaktan bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.) Aşağıdaki çalıştırarak hedef tablo oluşturabilirsiniz.Transact-SQL komut, AdventureWorks 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, verileri veri akışına düz bir dosya yüklemek için düz dosya varolan bir Bağlantı Yöneticisi'ni kullanan bir kaynak bileşeni gösterir.Düz dosya kaynak verileri buradan vererek oluşturulur SQL Server.

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

  1. Use SQL Server Alma ve Verme Sihirbazı'nı vermek için Person.Address tablosundanAdventureWorks örnek veritabanı için virgülle sınırlandırılan bir düz dosya.Bu örnek, ExportedAddresses.txt dosya adını kullanır.

  2. Düz dosya Bağlantı Yöneticisi, verilen bir veri dosyasına bağlanan oluşturun.

  3. Yeni bir komut dosyası bileşeni için veri akışı Tasarımcısı yüzey ekleyin ve olarak yapılandırma bir kaynak.

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

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

  6. Ü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 ve Komut dosyası dönüştürme Düzenleyicisi.

  7. Oluşturma ve bir hedef bileşeni gibi yapılandırma bir SQL Server Hedef veya hedef bileşeni içinde gösterilen örnek Hedef komut dosyası bileşeni ile oluşturma.Sonra kaynak bileşeni, hedef bağlayacak.(Bir kaynaktan bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.) Aşağıdaki çalıştırarak hedef tablo oluşturabilirsiniz.Transact-SQL komut, AdventureWorks 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 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.