Udostępnij za pośrednictwem


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

  1. Tworzenie ODBC menedżer połączeń łączy do AdventureWorks2008R2 bazy danych.

  2. 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
    )
    
  3. Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako obiekt obiekt docelowy.

  4. Łą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.

  5. Otwórz Script Editor transformacji.Na Kolumny wprowadzania strona, zaznacz AddressID i City kolumny.

  6. Na wejść i wyjść strona, należy zmienić dane wejściowe z nazwę bardziej opisową, taką jak MyAddressInput.

  7. Na Menedżerowie połączenia strona, dodawanie lub tworzenie menedżer połączeń ODBC z nazwę opisową, taką jak MyODBCConnectionManager.

  8. Na skryptu strona, kliknij przycisk Edytowanie skryptu, a następnie wprowadź skryptu pokazano to poniżej na ScriptMain klasy

  9. 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();
    
        }
    }
    
Ikona usług Integration Services (mała)Bieżąco z usług integracji

Pobieranie najnowszych artykułów, próbek i wideo z Microsoft, jak również wybranych rozwiązań ze Wspólnoty, odwiedź witrynę Integration Services strona na MSDN i TechNet:

Aby otrzymywać automatyczne powiadomienia dotyczące tych aktualizacji, zasubskrybuj źródła danych RSS dostępne na tej stronie.