Tworzenie składnika skryptów docelowego ODBC
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.Jednakże można także utworzyć ad hoc ODBC obiekt docelowy do użytku w jeden pakiet. Aby utworzyć ten ad hoc ODBC obiekt docelowy, korzystanie ze składnika skryptów, jak pokazano w następującym przykładzie.
Ostrzeżenie
Aby utworzyć składnik, który można łatwiej ponownie użyć wielu zadań przepływ danych i wiele pakietów, należy rozważyć przy użyciu kodu w tym przykładzie składnik skryptów jako punktu wyjścia dla niestandardowego składnik przepływ danych.Aby uzyskać więcej informacji, zobacz Opracowywanie danych niestandardowy składnik przepływu.
Przykład
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.
W tym przykładzie zostanie zmodyfikowana wersja niestandardowej ADO.NET obiekt docelowy, została wykazana w temacie, Tworzenie docelowych ze składnikiem skryptu.Jednak w tym przykładzie niestandardowe ADO.NET obiekt docelowy został zmodyfikowany do pracy z ODBC menedżer połączeń i zapisywanie danych w docelowym ODBC.Modyfikacje te obejmują również następujące zmiany:
Nie można wywołać AcquireConnection metoda menedżer połączeń ODBC z kod zarządzany, ponieważ funkcja zwraca obiektu macierzystego.Dlatego w tym przykładzie wykorzystano połączenie ciąg z menedżer połączeń do połączenia ze źródłem danych bezpośrednio przy użyciu zarządzanych ODBC .NET Framework dostawcy danych.
OdbcCommand Oczekuje parametrów pozycyjne.Pozycje parametry są oznaczone znaki zapytania (?), tekst polecenia.(W przeciwieństwie SqlCommand oczekuje parametrów nazwanych.)
W tym przykładzie użyto Person.Address tabela w AdventureWorks2008R2 przykładowej bazy danych.The example passes the first and fourth columns, the int AddressID and nvarchar(30) City columns, of this table through the data flow.Służy to te same dane w źródło, transformacja i próbek docelowego w temacie, Rozwoju określonych typów z składniki skryptów.
Aby skonfigurować w tym przykładzie składnik skryptów
Tworzenie ODBC menedżer połączeń łączy do AdventureWorks2008R2 bazy danych.
Tworzenie obiekt docelowy tabela, uruchamiając następujące polecenie Transact-SQL w AdventureWorks2008R2 bazy danych:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL )
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako obiekt obiekt docelowy.
Łączenie danych wyjściowych kopalnianych źródło lub transformacja do składnika docelowego w SSIS projektanta.(Źródło można podłączyć bezpośrednio do obiekt docelowy bez wszelkie przekształcenia.) Do zapewnienia, że próbka ta działa, wyjściowe składnika nadrzędnego musi zawierać co najmniej AddressID i City kolumny z Person.Address tabela AdventureWorks2008R2 przykładowej bazy danych.
Otwórz Script Editor transformacji.Na Kolumny wprowadzania strona, zaznacz AddressID i City kolumny.
Na wejść i wyjść strona, należy zmienić dane wejściowe z nazwę bardziej opisową, taką jak MyAddressInput.
Na Menedżerowie połączenia strona, dodawanie lub tworzenie menedżer połączeń ODBC z nazwę opisową, taką jak MyODBCConnectionManager.
Na skryptu strona, kliknij przycisk Edytowanie skryptu, a następnie wprowadź skryptu pokazano to poniżej na ScriptMain klasy
Zamknij skrypt środowiska programowania Zamknij Script Editor transformacji, a następnie uruchom próbki.
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(); } }
|