Udostępnij za pośrednictwem


Tworzenie obiekt docelowy przy użyciu składnika skryptów

Używasz obiekt docelowy składnika w przepływ danych Integration Services pakiet, aby zapisać dane otrzymane z "pod prąd" źródeł i wykonywania przekształceń do urządzenie źródłowe danych. Zazwyczaj składnika docelowego łączy się z danymi urządzenie źródłowe za pośrednictwem zarządcę istniejące połączenia.

Aby zapoznać się z omówieniem składnika skryptów zobacz Rozszerzanie przepływ danych w składniku skryptów.

Składnik skryptów i kodu infrastruktury, który generuje można znacznie uprościć proces tworzenia niestandardowego składnik przepływ danych.Niemniej jednak, aby zrozumieć, w jaki sposób działa składnik skryptów, może się okazać, że przydatne do odczytu przez proces opracowywania składniki przepływ danych niestandardowych, w Rozwijanie niestandardowy składnik przepływ danych sekcja, a zwłaszcza Rozwijanie niestandardowe obiekt obiekt docelowy składnika.

Wprowadzenie do korzystania ze składnikiem obiekt docelowy

Po dodaniu składnika skryptów do karty przepływ danych SSIS Projektant, Wybierz typ składnika skryptów zostanie otwarte okno dialogowe a wyświetlany jest monit o wybranie urządzenie źródłowe, obiekt obiekt docelowy, or transformacja skryptu.W tym oknie dialogowym Wybierz obiekt obiekt docelowy.

Następnie należy połączyć danych wyjściowych transformacja do obiekt docelowy składnika w SSIS Projektant. Do testowania, możesz połączyć urządzenie źródłowe bezpośrednio do obiekt docelowy, bez żadnych przekształceń.

Konfigurowanie składnika obiekt docelowy w trybie projektowania metadane

Po wybraniu opcji tworzenia obiekt docelowy składników, można skonfigurować za pomocą składnika Skrypt transformacja edytora.Aby uzyskać więcej informacji zobaczConfiguring the Script Component in the Script Component Editor.

Aby wybrać język skryptów, używających obiekt docelowy skrypt, należy ustawić ScriptLanguage Właściwość Skrypt stronaSkrypt transformacja edytora -okno dialogowe.

Uwaga

Aby ustawić domyślny język dla składnika skrypt skryptowy, za pomocą Język wykonywanie wykonywanie skryptów Opcja Ogólne stronaOpcje -okno dialogowe.Aby uzyskać więcej informacji zobaczStrona ogólnych.

Przepływ danych obiekt docelowy składnik ma jedno wejście i wyjście nie.Konfigurowanie dane wejściowe dla składnika jest jednym z kroków, które należy wykonać w trybie projektowania metadane za pomocą Skrypt transformacja edytora, zanim napisać skrypt niestandardowy.

Dodawanie Menedżer połączeń

Zazwyczaj docelowego składnika używa zarządcę istniejące połączenia do połączenia z danymi urządzenie źródłowe do które zapisuje dane ze strumienia danych.Na Menedżer połączeń stronaSkrypt transformacja edytora, click Dodawanie Dodawanie Menedżera odpowiednie połączenie.

Menedżer połączeń jest jednak tylko wygodnym jednostki hermetyzuje i przechowuje informacje wymagane do łączenia się z danych urządzenie źródłowe określonego typu.Należy napisać kod niestandardowy do ładowania lub zapisywania danych, a nawet do otwierania i zamykania połączenia ze źródłem danych.

Aby uzyskać ogólne informacje dotyczące korzystania z Menedżera połączeń ze składnikiem skryptów zobacz Connecting to Data Sources in the Script Component.

Aby uzyskać więcej informacji na temat Menedżer połączeń stronaSkrypt transformacja edytora, see Skrypt transformacja Edytor (strona Menedżer połączeń).

Konfigurowanie wejściowych i wprowadzania kolumny

A obiekt docelowy składnik ma jedno wejście i wyjście nie.

Na Kolumny danych wejściowych stronaSkrypt transformacja edytora, lista kolumna zawiera dostępne kolumny z danych wyjściowych "pod prąd" składnik przepływ danych.Zaznacz kolumny, które chcesz zapisać.

Aby uzyskać więcej informacji na temat Kolumny danych wejściowych stronaSkrypt transformacja edytora, see Skrypt transformacja Edytor (strona wprowadzania kolumny).

The Inputs and Outputs strona of the Script transformacja Editor shows a single input, which you can rename.Użytkownik będzie odnosić się do danych wejściowych przez jego nazwę w skrypcie przy użyciu właściwość metoda dostępu utworzone w ten kod automatycznie generowanej.

Aby uzyskać więcej informacji na temat Wejść i wyjść stronaSkrypt transformacja edytora, see Skrypt transformacja Edytor (wejściowych i wyjść strona).

Dodawanie zmiennych

Jeśli chcesz używać istniejących zmiennych w skrypcie, możesz je dodać w ReadOnlyVariables i ReadWriteVariables właściwość pola na Skrypt stronaSkrypt transformacja edytora.

Po dodaniu wielu zmiennych w polach właściwość nazwy zmiennych należy oddzielić przecinkami.Wiele zmiennych można także wybrać, klikając przycisk wielokropka () znajdujący się obok ReadOnlyVariables i ReadWriteVariables pola właściwość, a następnie wybierając zmiennych w Umożliwia wybór zmiennych -okno dialogowe.

Aby uzyskać ogólne informacje dotyczące sposobu korzystania ze składnikiem skrypt zmiennych zobacz Za pomocą zmiennych w składniku skryptów.

Aby uzyskać więcej informacji na temat Skrypt stronaSkrypt transformacja edytora, see Skrypt transformacja Edytor (skrypt strona).

obiekt obiekt docelowy składnika w trybie projektowania kodu wykonywanie wykonywanie skryptów

Po skonfigurowaniu metadane dla składnika, można napisać skrypt niestandardowy.In the Script Transformation Editor, on the Script page, click Edit Script to open the Microsoft Visual Studio Tools for Applications (VSTA) IDE where you can add your custom script.The scripting language that you use depends on whether you selected Microsoft Visual Basic 2008 or Microsoft Visual C# 2008 as the script language for the ScriptLanguage property on the Script page.

Aby uzyskać ważne informacje, dotyczy wszystkich rodzajów elementów utworzonych za pomocą składnika skryptów zobacz Kodowanie i debugowanie składnika skryptów.

Opis kod jest generowany automatycznie

Po otwarciu IDE VSTA po utworzeniu i skonfigurowaniu składnika docelowego, edytowalnych ScriptMain Klasa pojawia się w edytorze kodu ze skrótowej na ProcessInputRow Metoda. The ScriptMain class is where you will write your custom code, and ProcessInputRow is the most important metoda in a obiekt docelowy component.

Jeśli otworzysz Eksplorator projektu okna VSTA, można wyświetlić składnik skryptów wygenerował również tylko do odczytu BufferWrapper i ComponentWrapper elementy projektu. The ScriptMain class inherits from UserComponent class in the ComponentWrapper project element.

Przy uruchomieniu czas, aparat przepływ danych wywołuje ProcessInput Metoda UserComponent klasy, która zastępuje ProcessInput(Int32, PipelineBuffer) Metoda ScriptComponent Klasa nadrzędna. The ProcessInput metoda in turn loops through the rows in the input buffer and calls the ProcessInputRow metoda one czas for each row.

Zapisywanie swój kod niestandardowy

Aby zakończyć tworzenie składnika niestandardowe obiekt obiekt docelowy, można napisać skrypt w następujących metod w ScriptMain Klasa.

  1. Zastępowanie AcquireConnections Metoda, aby połączyć się z zewnętrznym źródłem danych. Wyodrębnij obiekt połączenia lub informacje wymagane połączenie z menedżer połączeń.

  2. Zastępowanie PreExecute Metoda, aby przygotować komputer do zapisania danych. Na przykład, możesz utworzyć i skonfigurować SqlCommand i jego parametry w tej metodzie.

  3. Za pomocą zastąpiona ProcessInputRow Metoda kopiowania każdego wiersza wejściowego do zewnętrznego urządzenie źródłowe danych. Na przykład w przypadku SQL Server obiekt docelowy, do parametrów można kopiować wartości kolumna SqlCommand i wydaj polecenie jeden raz dla każdego wiersza. Dla obiekt docelowy plik prosty, można wpisać wartości dla każdej kolumna StreamWriter, oddzielając wartości za ogranicznik kolumna.

  4. Zastępowanie PostExecute Metoda, aby rozłączyć się z zewnętrznego urządzenie źródłowe danych, jeśli jest to wymagane, a następnie wykonać wymagane czyszczenie.

Przykłady

W przykładach, występujące pokazano kod, który jest wymagany w ScriptMain klasy, aby utworzyć obiekt docelowy składnika.

Uwaga

These examples use the Person.Address table in the AdventureWorks sample database and pass its first and fourth columns, the intAddressID and nvarchar(30)City columns, through the data flow.Te same dane, jest używany w źródle, przekształcania i próbek obiekt docelowy w tej sekcji.Dodatkowe wymagania wstępne i założenia są udokumentowane na przykład każdy.

Przykład obiekt obiekt docelowy ADO.NET

W przykładzie pokazano obiekt docelowy składnik, który używa istniejącego ADO.NET Menedżer połączeń do zapisania danych z przepływ danych w SQL Server Tabela.

Jeśli chcesz uruchomić ten kod przykładowy, należy skonfigurować pakiet i składnika w następujący sposób:

  1. Tworzenie ADO.NET Menedżer połączeń, który używa SqlClient Dostawca, aby połączyć się z AdventureWorks bazy danych.

  2. Utwórz obiekt docelowy tabeli, uruchamiając następujące Transact-SQL polecenia w AdventureWorks Baza 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ń.) Te dane wyjściowe należy podać dane z Person.Address tabelaAdventureWorks przykładowej bazy danych, na który zawiera co najmniej AddressID and Miasto kolumny.

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

  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ń stron, dodawanie lub tworzenie ADO.NET Menedżer połączeń przy użyciu nazwy, np. MyADONETConnectionManager.

  8. Na Skrypt strona, kliknij przycisk Edytowanie skryptu i wpisz skrypt, który następuje.Następnie zamknij środowiska programistycznego skryptu.

  9. Zamknij Skrypt transformacja edytora i uruchomieniu próbki.

Imports System.Data.SqlClient
...
Public Class ScriptMain
    Inherits UserComponent

    Dim connMgr As IDTSConnectionManager100
    Dim sqlConn As SqlConnection
    Dim sqlCmd As SqlCommand
    Dim sqlParam As SqlParameter

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        connMgr = Me.Connections.MyADONETConnectionManager
        sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection)

    End Sub

    Public Overrides Sub PreExecute()

        sqlCmd = New SqlCommand("INSERT INTO Person.Address2(AddressID, City) " & _
            "VALUES(@addressid, @city)", sqlConn)
        sqlParam = New SqlParameter("@addressid", SqlDbType.Int)
        sqlCmd.Parameters.Add(sqlParam)
        sqlParam = New SqlParameter("@city", SqlDbType.NVarChar, 30)
        sqlCmd.Parameters.Add(sqlParam)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)
        With sqlCmd
            .Parameters("@addressid").Value = Row.AddressID
            .Parameters("@city").Value = Row.City
            .ExecuteNonQuery()
        End With
    End Sub

    Public Overrides Sub ReleaseConnections()

        connMgr.ReleaseConnection(sqlConn)

    End Sub

End Class
using System.Data.SqlClient;
public class ScriptMain:
    UserComponent

{
    IDTSConnectionManager100 connMgr;
    SqlConnection sqlConn;
    SqlCommand sqlCmd;
    SqlParameter sqlParam;

    public override void AcquireConnections(object Transaction)
    {

        connMgr = this.Connections.MyADONETConnectionManager;
        sqlConn = (SqlConnection)connMgr.AcquireConnection(null);

    }

    public override void PreExecute()
    {

        sqlCmd = new SqlCommand("INSERT INTO Person.Address2(AddressID, City) " +
            "VALUES(@addressid, @city)", sqlConn);
        sqlParam = new SqlParameter("@addressid", SqlDbType.Int);
        sqlCmd.Parameters.Add(sqlParam);
        sqlParam = new SqlParameter("@city", SqlDbType.NVarChar, 30);
        sqlCmd.Parameters.Add(sqlParam);

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {
        {
            sqlCmd.Parameters["@addressid"].Value = Row.AddressID;
            sqlCmd.Parameters["@city"].Value = Row.City;
            sqlCmd.ExecuteNonQuery();
        }
    }

    public override void ReleaseConnections()
    {

        connMgr.ReleaseConnection(sqlConn);

    }

}

obiekt obiekt docelowy plik prosty przykład

W przykładzie pokazano obiekt docelowy składnika, który będzie używał zarządcę istniejące połączenie plik prosty do zapisywania danych ze strumienia danych pliku płaski.

Jeśli chcesz uruchomić ten kod przykładowy, należy skonfigurować pakiet i składnika w następujący sposób:

  1. Tworzenie połączenia płaski plik menedżera, który łączy się z obiekt docelowy pliku.Plik nie musi istnieć, zostanie utworzony przez składnik obiekt docelowy.Skonfigurować go jako plik rozdzielany przecinkami, który zawiera AddressID and Miasto kolumny.

  2. Dodać nowy składnik skryptów do powierzchni projektanta przepływ danych i skonfiguruj ją jako obiekt obiekt docelowy.

  3. Łą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ń.) Te dane wyjściowe należy podać dane z Person.Address tabelaAdventureWorks przykładowej bazy danych, a powinna zawierać co najmniej AddressID and Miasto kolumny.

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

  5. Na Wejść i wyjść strona, zmiana nazwy wprowadzone nazwę bardziej opisową, taką jak MyAddressInput.

  6. Na Menedżer połączeń strona, dodawanie lub tworzenia połączenia plik prosty menedżera z nazwę opisową, taką jak MyFlatFileDestConnectionManager.

  7. Na Skrypt strona, kliknij przycisk Edytowanie skryptu i wpisz skrypt, który następuje.Następnie zamknij środowiska programistycznego skryptu.

  8. Zamknij Skrypt transformacja edytora i uruchomieniu próbki.

Imports System.IO
...
Public Class ScriptMain
    Inherits UserComponent

    Dim copiedAddressFile As String
    Private textWriter As StreamWriter
    Private columnDelimiter As String = ","

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        Dim connMgr As IDTSConnectionManager100 = _
            Me.Connections.MyFlatFileDestConnectionManager
        copiedAddressFile = CType(connMgr.AcquireConnection(Nothing), String)

    End Sub

    Public Overrides Sub PreExecute()

        textWriter = New StreamWriter(copiedAddressFile, False)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With textWriter
            If Not Row.AddressID_IsNull Then
                .Write(Row.AddressID)
            End If
            .Write(columnDelimiter)
            If Not Row.City_IsNull Then
                .Write(Row.City)
            End If
            .WriteLine()
        End With

    End Sub

    Public Overrides Sub PostExecute()

        textWriter.Close()

    End Sub

End Class
using System.IO;
public class ScriptMain:
    UserComponent

{
    string copiedAddressFile;
    private StreamWriter textWriter;
    private string columnDelimiter = ",";

    public override void AcquireConnections(object Transaction)
    {

        IDTSConnectionManager100 connMgr = this.Connections.MyFlatFileDestConnectionManager;
        copiedAddressFile = (string) connMgr.AcquireConnection(null);

    }

    public override void PreExecute()
    {

        textWriter = new StreamWriter(copiedAddressFile, false);

    }

    public override void MyAddressInput_ProcessInputRow(MyAddressInputBuffer Row)
    {

        {
            if (!Row.AddressID_IsNull)
            {
                textWriter.Write(Row.AddressID);
            }
            textWriter.Write(columnDelimiter);
            if (!Row.City_IsNull)
            {
                textWriter.Write(Row.City);
            }
            textWriter.WriteLine();
        }

    }

    public override void PostExecute()
    {

        textWriter.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.