Bir ODBC hedef komut dosyası bileşeni ile oluşturma
In SQL Server Integration Services, you typically save data to an ODBC destination by using an ADO.NET destination and the .NET Framework Data Provider for ODBC.Ancak, tek bir pakette bir ad hoc ODBC hedef kullanmak için de oluşturabilirsiniz.Bu ad hoc ODBC hedef oluşturmak için , komut dosyası bileşeni aşağıdaki örnekte gösterildiği gibi kullanın.
Not
Birden çok veri akışı görevleri ve birden çok paket arasında daha kolay yeniden kullanabileceğiniz bir bileşen oluşturmak istiyorsanız, bu komut dosyası bileşeni örnek kodu için bir özel veri akışı bileşeni başlangıç noktası olarak kullanarak göz önünde bulundurun.Daha fazla bilgi için bkz:Özel veri akışı bileşen geliştirme.
Örnek
The following example demonstrates how to create a destination component that uses an existing ODBC connection manager to save data from the data flow into a Microsoft SQL Server table.
Bu örnekte, özel değiştirilmiş bir sürümüdür ADO.NET Bu konuda, gösterilen hedef Hedef komut dosyası bileşeni ile oluşturma.Ancak, bu örnekte, özel ADO.NET Hedef, bir ODBC Bağlantı Yöneticisi ile birlikte çalışmak ve verileri bir ODBC hedefe kaydetmek için değiştirildi. Bu değişiklikler, aşağıdaki değişiklikleri de içerir:
Çağrılamıyor, AcquireConnection yerel bir nesne döndürdüğünden, ODBC Bağlantı Yöneticisi ' yöntem yönetilen kod. Bu nedenle, bu örnek verilere bağlanmak için Bağlantı Yöneticisi bağlantı dizisini kullanır kaynak yönetilen ODBC kullanarak doğrudan .NET Framework Veri sağlayıcı.
The OdbcCommand expects positional parameters.Parametrelerin konumlarını komutunun metin soru işaretlerine (?) gösterilir.(Tersine, bir SqlCommand adlandırılmış parametreler umuyor.)
Bu örnek kullanır Person.Address tablo in the AdventureWorks örnek veritabanı.The example passes the first and fourth columns, the intAddressID and nvarchar(30)City columns, of this table through the data flow.Bu aynı veri kullanılan kaynak, dönüştürme ve konusunda, hedef örnek Belirli bir komut dosyası bileşenleri türleri geliştirme.
Bu komut dosyası bileşeni örnek yapılandırmak için
Yöneticisine bağlanan bir ODBC bağlantısı oluşturma AdventureWorks veritabanıdır.
Aşağıdaki Transact-SQL komutu çalıştırarak hedef tablo oluşturmak AdventureWorks veritabanı:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL )
Yeni bir komut dosyası bileşeni için veri akışı Tasarımcısı yüzey ekleyin ve hedef olarak yapılandırın.
Hedef bileşeninde Geliş yönündeki çok kaynak ya da dönüştürme çıkışını bağlanmak için SSIS Tasarımcı. (Bir kaynaktan bir hedef herhangi bir dönüştürme olmaksızın doğrudan bağlanabilirsiniz.) Bu örnek çalıştığından emin olmak için , Geliş yönündeki bileşeni çıkışını en azından içermelidirAddressID and Şehir sütunlarındanPerson.Address tablosuAdventureWorks örnek veritabanı.
Açık Komut dosyası dönüştürme Düzenleyicisi.Üzerinde Giriş bir sütun sayfa, seçin.AddressID and Şehir sütunlar.
Üzerinde Giriş ve çıkışlarını sayfa, giriş gibi daha tanımlayıcı bir adla yeniden adlandırın.MyAddressInput.
Üzerinde Bağlantı Yöneticisi sayfa ekleme veya ODBC Bağlantı Yöneticisi gibi bir açıklayıcı adla oluşturun.MyODBCConnectionManager.
Üzerinde Komut dosyası sayfasında, tıklatın.Komut dosyası Düzenleve aşağıda gösterilen kodu girin...ScriptMain sınıf.
Komut dosyası geliştirme ortamı, Kapat'ı kapatmak Komut dosyası dönüştürme Düzenleyicisive sonra da örnek çalıştırın.
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(); } }
|