Udostępnij za pośrednictwem


Tworzenie obiekt docelowy ODBC za pomocą składnika skryptów

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 można również utworzyć ad hoc ODBC obiekt docelowy do użycia w jeden pakiet.Aby utworzyć ten ad hoc ODBC obiekt docelowy, używać składnika skryptów, jak pokazano w poniższym przykładzie.

Uwaga

Jeśli chcesz utworzyć składnik, który można łatwiej ponownie używać wielu zadań przepływ danych i wielu pakietów, należy rozważyć przy użyciu kodu w tym przykładzie składnika skryptów jako punktu wyjścia dla składnika przepływ danych niestandardowych.Aby uzyskać więcej informacji zobaczRozwijanie niestandardowy składnik przepływ danych.

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 jest zmodyfikowaną wersja niestandardowe ADO.NET obiekt obiekt docelowy, które było udowodnić w temacie, Tworzenie obiekt docelowy przy użyciu składnika skryptów.Jednak w tym przykładzie niestandardowe ADO.NET obiekt obiekt docelowy została zmodyfikowana tak, aby pracować z ODBC menedżer połączeń i zapisywać dane do obiekt docelowy ODBC. Modyfikacje te obejmują również następujące zmiany:

  • Nie można wywołać AcquireConnection Metoda ODBC menedżer połączeń z zarządzać kodu, ponieważ zwraca obiekt macierzystym. W związku z tym, w przykładzie użyto ciąg połączenia menedżer połączeń Aby połączyć się z danymi urządzenie źródłowe bezpośrednio, używając zarządzanych ODBC .NET Framework Dostawca danych.

  • The OdbcCommand expects positional parameters.Pozycje parametrów są oznaczone znaki zapytania (?) w tekście polecenia.(W drugiej strony, SqlCommand oczekuje, że parametry nazwane.)

W tym przykładzie użyto Person.Address tabelaAdventureWorks przykładowej bazy danych.The example passes the first and fourth columns, the intAddressID and nvarchar(30)City columns, of this table through the data flow.Służy to te same dane w urządzenie źródłowe, transformacji i przykłady obiekt docelowy w temacie, Rozwijanie określonych typów składniki skryptów.

Aby skonfigurować w tym przykładzie składnik skryptów

  1. Utworzenie połączenia ODBC menedżera, który łączy się z AdventureWorks bazy danych.

  2. Utworzyć tabela docelową, uruchamiając następujące polecenie języka Transact-SQL AdventureWorks bazy danych:

    CREATE TABLE [Person].[Address2](
        [AddressID] [int] NOT NULL,
        [City] [nvarchar](30) NOT NULL
    )
    
  3. Dodać nowy składnik skryptów do powierzchni projektanta przepływ danych i skonfiguruj ją jako obiekt obiekt docelowy.

  4. Łączenie danych wyjściowych "pod prąd" urządzenie źródłowe lub transformacja do obiekt docelowy składnika w SSIS Projektant. (urządzenie źródłowe można połączyć bezpośrednio do obiekt docelowy, bez żadnych przekształceń.) Aby upewnić się, że działa w tym przykładzie, dane wyjściowe składnika "pod prąd" musi zawierać co najmniej AddressID and Miasto kolumnyPerson.Address tabelaAdventureWorks przykładowej bazy danych.

  5. Otwórz Skrypt transformacja edytora.Na Kolumny danych wejściowych strona, zaznacz AddressID and Miasto kolumny.

  6. Na Wejść i wyjść strona, zmienić nazwę elementu danych wejściowych z bardziej opisową nazwę, taką jak MyAddressInput.

  7. Na Menedżer połączeń strona, dodać lub utworzyć Menedżera połączenia ODBC z nazwę opisową, taką jak MyODBCConnectionManager.

  8. Na Skrypt strona, kliknij przycisk Edytowanie skryptu, a następnie wpisz skrypt, pokazany poniżej w ScriptMain Klasa.

  9. Zamknij skrypt środowiska programowania, zamknij Skrypt transformacja edytora, a następnie uruchomić 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();
    
        }
    }
    
Integration Services icon (small) Konfiguracja w aktualizacji z usług integracja Services pobytu

Najnowsze pliki do pobrania, artykuły, próbki, i pliki wideo firmy Microsoft, jak również wybranego rozwiązania od Wspólnoty, odwiedź witrynę Integration Services strona w witrynie MSDN lub TechNet:

Automatycznego powiadomienie tych aktualizacji należy subskrybować źródła danych RSS, które jest dostępne strona.