Bagikan melalui


Membuat Tujuan ODBC dengan Komponen Skrip

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Di SQL Server Integration Services, Anda biasanya menyimpan data ke tujuan ODBC dengan menggunakan tujuan ADO.NET dan Penyedia Data .NET Framework untuk ODBC. Namun, Anda juga dapat membuat tujuan ODBC ad hoc untuk digunakan dalam satu paket. Untuk membuat tujuan ODBC ad hoc ini, Anda menggunakan komponen Skrip seperti yang ditunjukkan dalam contoh berikut.

Catatan

Jika Anda ingin membuat komponen yang dapat digunakan kembali dengan lebih mudah di beberapa tugas Aliran Data dan beberapa paket, pertimbangkan untuk menggunakan kode dalam sampel komponen Skrip ini sebagai titik awal untuk komponen aliran data kustom. Untuk informasi selengkapnya, lihat Mengembangkan Komponen Aliran Data Kustom.

Contoh

Contoh berikut menunjukkan cara membuat komponen tujuan yang menggunakan manajer koneksi ODBC yang ada untuk menyimpan data dari aliran data ke dalam tabel Microsoft SQL Server.

Contoh ini adalah versi yang dimodifikasi dari tujuan ADO.NET kustom yang ditunjukkan dalam topik, Membuat Tujuan dengan Komponen Skrip. Namun, dalam contoh ini, tujuan ADO.NET kustom telah dimodifikasi untuk bekerja dengan manajer koneksi ODBC dan menyimpan data ke tujuan ODBC. Modifikasi ini juga mencakup perubahan berikut:

  • Anda tidak dapat memanggil metode AcquireConnection manajer koneksi ODBC dari kode terkelola, karena mengembalikan objek asli. Oleh karena itu, sampel ini menggunakan string koneksi pengelola koneksi untuk terhubung ke sumber data secara langsung dengan menggunakan Penyedia Data ODBC .NET Framework terkelola.

  • OdbcCommand mengharapkan parameter posisi. Posisi parameter ditunjukkan oleh tanda tanya (?) dalam teks perintah. (Sebaliknya, SqlCommand mengharapkan parameter bernama.)

Contoh ini menggunakan tabel Person.Address dalam database sampel AdventureWorks . Contoh ini meneruskan kolom pertama dan keempat, kolom Int AddressID dan nvarchar(30) City , dari tabel ini melalui aliran data. Data yang sama ini digunakan dalam sampel sumber, transformasi, dan tujuan dalam topik, Mengembangkan Jenis Komponen Skrip Tertentu.

Untuk mengonfigurasi contoh Komponen Skrip ini

  1. Buat manajer koneksi ODBC yang tersambung ke database AdventureWorks .

  2. Buat tabel tujuan dengan menjalankan perintah Transact-SQL berikut ini di database AdventureWorks :

    CREATE TABLE [Person].[Address2]([AddressID] [int] NOT NULL,  
        [City] [nvarchar](30) NOT NULL)  
    
  3. Tambahkan komponen Skrip baru ke permukaan perancang Aliran Data dan konfigurasikan sebagai tujuan.

  4. Sambungkan output sumber hulu atau transformasi ke komponen tujuan di SSIS Designer. (Anda dapat menghubungkan sumber langsung ke tujuan tanpa transformasi apa pun.) Untuk memastikan bahwa sampel ini berfungsi, output komponen upstream harus menyertakan setidaknya kolom AddressID dan City dari tabel Person.Address dari database sampel AdventureWorks .

  5. Buka Editor Transformasi Skrip. Pada halaman Kolom Input, pilih kolom AddressID dan City .

  6. Pada halaman Input dan Output , ganti nama input dengan nama yang lebih deskriptif seperti MyAddressInput.

  7. Pada halaman Pengelola Sambungan, tambahkan atau buat manajer koneksi ODBC dengan nama deskriptif seperti MyODBCConnectionManager.

  8. Pada halaman Skrip, klik Edit Skrip, lalu masukkan skrip yang ditunjukkan di bawah ini di kelas ScriptMain.

  9. Tutup lingkungan pengembangan skrip, tutup Editor Transformasi Skrip, lalu jalankan sampel.

    Imports System.Data.Odbc  
    ...  
    Public Class ScriptMain  
        Inherits UserComponent  
    
        Dim odbcConn As OdbcConnection  
        Dim odbcCmd As OdbcCommand  
        Dim odbcParam As OdbcParameter  
    
        Public Overrides Sub AcquireConnections(ByVal Transaction As Object)  
    
            Dim connectionString As String  
            connectionString = Me.Connections.MyODBCConnectionManager.ConnectionString  
            odbcConn = New OdbcConnection(connectionString)  
            odbcConn.Open()  
    
        End Sub  
    
        Public Overrides Sub PreExecute()  
    
            odbcCmd = New OdbcCommand("INSERT INTO Person.Address2(AddressID, City) " & _  
                "VALUES(?, ?)", odbcConn)  
            odbcParam = New OdbcParameter("@addressid", OdbcType.Int)  
            odbcCmd.Parameters.Add(odbcParam)  
            odbcParam = New OdbcParameter("@city", OdbcType.NVarChar, 30)  
            odbcCmd.Parameters.Add(odbcParam)  
    
        End Sub  
    
        Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)  
    
            With odbcCmd  
                .Parameters("@addressid").Value = Row.AddressID  
                .Parameters("@city").Value = Row.City  
                .ExecuteNonQuery()  
            End With  
    
        End Sub  
    
        Public Overrides Sub ReleaseConnections()  
    
            odbcConn.Close()  
    
        End Sub  
    
    End Class  
    
    using System.Data.Odbc;  
    ...  
    public class ScriptMain :  
        UserComponent  
    {  
        OdbcConnection odbcConn;  
        OdbcCommand odbcCmd;  
        OdbcParameter odbcParam;  
    
        public override void AcquireConnections(object Transaction)  
        {  
    
            string connectionString;  
            connectionString = this.Connections.MyODBCConnectionManager.ConnectionString;  
            odbcConn = new OdbcConnection(connectionString);  
            odbcConn.Open();  
    
        }  
    
        public override void PreExecute()  
        {  
    
            odbcCmd = new OdbcCommand("INSERT INTO Person.Address2(AddressID, City) " +  
                "VALUES(?, ?)", odbcConn);  
            odbcParam = new OdbcParameter("@addressid", OdbcType.Int);  
            odbcCmd.Parameters.Add(odbcParam);  
            odbcParam = new OdbcParameter("@city", OdbcType.NVarChar, 30);  
            odbcCmd.Parameters.Add(odbcParam);  
    
        }  
    
        public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)  
        {  
    
            {  
                odbcCmd.Parameters["@addressid"].Value = Row.AddressID;  
                odbcCmd.Parameters["@city"].Value = Row.City;  
                odbcCmd.ExecuteNonQuery();  
            }  
    
        }  
    
        public override void ReleaseConnections()  
        {  
    
            odbcConn.Close();  
    
        }  
    }  
    

Lihat Juga

Membuat Tujuan dengan Komponen Skrip