Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Buat manajer koneksi ODBC yang tersambung ke database AdventureWorks .
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)Tambahkan komponen Skrip baru ke permukaan perancang Aliran Data dan konfigurasikan sebagai tujuan.
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 .
Buka Editor Transformasi Skrip. Pada halaman Kolom Input, pilih kolom AddressID dan City .
Pada halaman Input dan Output , ganti nama input dengan nama yang lebih deskriptif seperti MyAddressInput.
Pada halaman Pengelola Sambungan, tambahkan atau buat manajer koneksi ODBC dengan nama deskriptif seperti MyODBCConnectionManager.
Pada halaman Skrip, klik Edit Skrip, lalu masukkan skrip yang ditunjukkan di bawah ini di kelas ScriptMain.
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 Classusing 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(); } }