Udostępnij za pośrednictwem


Opis Component Object Model skryptów

Zgodnie z opisem w Kodowanie i debugowanie składnika skryptów, projekt składnika skryptów zawiera trzy elementy projektu:

  1. The ScriptMain element, which contains the ScriptMain class in which you write your code. The ScriptMain class inherits from the UserComponent class.

  2. The ComponentWrapper element, which contains the UserComponent class, an wystąpienie of ScriptComponent that contains the methods and properties that you will use to process data and to interact with the pakiet. The ComponentWrapper element also contains Connections and Variables kolekcja classes.

  3. The BufferWrapper element, which contains classes that inherits from ScriptBuffer for each input and output, and typed properties for each kolumna.

Podczas pisania kodu ScriptMain Zapas, będziesz używać obiektów, metod i właściwości omówione w tym temacie. Każdy składnik nie używa metody wymienione w tym miejscu; jednak, są one używane w sekwencji wyświetlane.

The ScriptComponent base class does not contain any implementation code for the methods discussed in this topic.W związku z tym jest zbędne, ale nieszkodliwe, aby dodać wywołanie Implementacja klasy podstawowej do implementacji metoda.

Aby uzyskać informacje dotyczące sposobów korzystania z metody i właściwości tych klas konkretnego typu składnika skryptów zobacz sekcję Dodatkowe przykłady składników skryptów. Przykład tematy zawierają również przykładowy kod pełną.

Metoda AcquireConnections

urządzenie źródłowe i miejsca docelowe zwykle muszą łączyć się z zewnętrznym źródłem danych.Zastępowanie AcquireConnections(Object) Metoda ScriptComponent utworzyć klasy, aby pobrać odpowiednie połączenie lub informacje o połączeniu menedżer połączeń.

W poniższym przykładzie są zwracane System.Data.SqlClient.SqlConnection z zarządcę ADO.NET połączenia.

    Dim connMgr As IDTSConnectionManager100
    Dim sqlConn As SqlConnection

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

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

    End Sub

W poniższym przykładzie zwraca pełną ścieżka i nazwę pliku z płaskim menedżer połączeń pliku, a następnie otwiera plik przy użyciu System.IO.StreamReader.

    Private textReader As StreamReader
    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        Dim connMgr As IDTSConnectionManager100 = _
            Me.Connections.MyFlatFileSrcConnectionManager
        Dim exportedAddressFile As String = _
            CType(connMgr.AcquireConnection(Nothing), String)
        textReader = New StreamReader(exportedAddressFile)

    End Sub

Metoda preExecute

Zastępowanie PreExecute() Metoda ScriptComponent Klasa podstawowa za każdym razem, gdy masz przetwarzania, które należy wykonać tylko raz, tylko w przypadku, przed rozpoczęciem przetwarzania wierszy danych. Na przykład w miejscu docelowym, można skonfigurować polecenie sparametryzowana, obiekt obiekt docelowy umożliwia wstawianie każdy wiersz danych do urządzenie źródłowe danych.

    Dim sqlConn As SqlConnection
    Dim sqlCmd As SqlCommand
    Dim sqlParam As SqlParameter
...
    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
    SqlConnection sqlConn; 
    SqlCommand sqlCmd; 
    SqlParameter sqlParam; 
    
    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); 
       
    }

Przetwarzanie wejściowych i wyjścia

Przetwarzanie wejściowych

Składniki skryptów, które są skonfigurowane jako przekształcenia lub miejsc docelowych ma jedno wejście.

Zapewnia element BufferWrapper projektu

Dla każdego wprowadzania, że zostały skonfigurowane, BufferWrapper Element projektu zawiera klasy, która wynika z ScriptBuffer i ma taką samą nazwę, jak dane wejściowe. Każda klasa bufor wejściowy zawiera następujące właściwości, funkcji i metod:

  • metoda dostępu nazwanych, wpisaną właściwości dla każdego wybrane kolumna danych wejściowych.Właściwości te są przeznaczone tylko do odczytu albo do odczytu i zapisu w zależności od Typ obciążenia określone dla kolumna na kolumna danych wejściowych stronaSkrypt transformacja edytora.

  • A <column>_IsNull dla każdej właściwość wybrane kolumna danych wejściowych. Ta właściwość jest tylko do odczytu albo do odczytu i zapisu w zależności od Typ obciążenia określone dla kolumna.

  • A DirectRowTo<outputbuffer> metoda dla każdego skonfigurowanego danych wyjściowych. Podczas filtrowania wierszy do jednego z kilku wyjść w tym samym użyje tych metod ExclusionGroup.

  • A NextRow Funkcja uzyskać następny wiersz danych wejściowych i EndOfRowset Funkcja służąca do ustalenia, czy ostatni buforu danych został przetworzony. Zazwyczaj nie ma potrzeby tych funkcji podczas korzystania z metody implementowane w przetwarzania danych wejściowych UserComponent Klasa podstawowa. Następna sekcja zawiera więcej informacji na temat UserComponent Klasa podstawowa.

Zapewnia element ComponentWrapper projektu

Element projektu ComponentWrapper zawiera klasę o nazwie UserComponent który pochodzi od ScriptComponent. The ScriptMain class in which you write your custom code derives in turn from UserComponent.The UserComponent class contains the following methods:

  • Implementacja zastąpiona ProcessInput Metoda. This is the method that the data flow engine calls next at run time after the PreExecute method, and it may be called multiple times.ProcessInput hands off processing to the <inputbuffer>_ProcessInput method.Następnie ProcessInput metoda sprawdza, czy do końca buforu wejściowego, a jeśli osiągnął koniec bufor wywołuje FinishOutputs Metoda i prywatnym MarkOutputsAsFinished Metoda. The MarkOutputsAsFinished metoda then calls SetEndOfRowset on the last output buffer.

  • Implementacja NotOverridable <inputbuffer>_ProcessInput Metoda. Ta implementacja domyślny po prostu pętli każdy wiersz danych wejściowych i wywołań <inputbuffer>_ProcessInputRow.

  • Implementacja NotOverridable <inputbuffer>_ProcessInputRow Metoda. Implementacja domyślnie jest puste.Jest to metoda, która zastąpi zwykle napisać kod niestandardowy przetwarzania danych.

Co należy zrobić, Twój kod niestandardowy

Następujące metody można używać do przetwarzania danych wejściowych w ScriptMain klasy:

  • Zastępowanie <inputbuffer>_ProcessInputRow do przetwarzania danych w każdym wierszu danych wejściowych w postaci, w jakiej przechodzi przez.

  • Zastępowanie <inputbuffer>_ProcessInput tylko wtedy, gdy trzeba wykonać czynność dodatkowych podczas odtwarzanych w pętli do wprowadzania wierszy. (Na przykład, trzeba sprawdzić EndOfRowset podjęcie inna czynność po wszystkich wierszy zostały przetworzone.) Wywołania<inputbuffer>_ProcessInputRow Wykonywanie przetwarzania wiersza.

  • Zastępowanie FinishOutputs Jeśli masz Zrób coś do wydruk, zanim zostaną one zamknięte.

The ProcessInput metoda ensures that these methods are called at the appropriate times.

Przetwarzanie wyjścia

Składniki skryptów, skonfigurowany jako źródła lub przekształceń ma jeden lub więcej wyjść.

Zapewnia element BufferWrapper projektu

Dla każdego produktu, które skonfigurowano element projektu BufferWrapper zawiera klasy, która wynika z ScriptBuffer i ma taką samą nazwę, jak dane wyjściowe. Każda klasa bufor wejściowy zawiera następujące właściwości i metod:

  • Właściwości metoda dostępu nazwane, pismo, tylko do zapisu dla każdej kolumna danych wyjściowych.

  • Tylko do zapisu <column>_IsNull właściwość dla każdej kolumna wybranych danych wyjściowych, która umożliwia zestaw wartość kolumna null.

  • An AddRow metoda to add an empty new row to the output buffer.

  • A SetEndOfRowset Metoda, aby umożliwić aparat przepływ danych wiedzieć, oczekuje się nie więcej buforów danych. Dostępna jest również EndOfRowset Funkcja służąca do ustalenia, czy bieżący bufor jest ostatnim buforu danych. Na ogół nie ma potrzeby tych funkcji podczas korzystania z metody implementowane w przetwarzania danych wejściowych UserComponent Klasa podstawowa.

Zapewnia element ComponentWrapper projektu

Element projektu ComponentWrapper zawiera klasę o nazwie UserComponent który pochodzi od ScriptComponent. The ScriptMain class in which you write your custom code derives in turn from UserComponent.The UserComponent class contains the following methods:

  • Implementacja zastąpiona PrimeOutput Metoda. The data flow engine calls this method before ProcessInput at run time, and it is only called one time.PrimeOutput hands off processing to the CreateNewOutputRows method.Następnie, jeżeli składnik jest urządzenie źródłowe (to znaczy składnika zawiera nie danych wejściowych), PrimeOutput wywołuje FinishOutputs Metoda i prywatnym MarkOutputsAsFinished Metoda. The MarkOutputsAsFinished metoda calls SetEndOfRowset on the last output buffer.

  • Implementacja NotOverridable CreateNewOutputRows Metoda. Implementacja domyślnie jest puste.Jest to metoda, która zastąpi zwykle napisać kod niestandardowy przetwarzania danych.

Co należy zrobić, Twój kod niestandardowy

Następujące metody można używać do przetwarzania wyjść w ScriptMain klasy:

  • Zastępowanie CreateNewOutputRows tylko po dodaniu i przed przetworzeniem wprowadzania wierszy należy wypełnić wiersze danych wyjściowych. Na przykład można użyć CreateNewOutputRows ze urządzenie źródłowe, ale w transformacja z wyjść asynchroniczne należy wywołać AddRow podczas lub po zakończeniu przetwarzania danych wejściowych.

  • Zastępowanie FinishOutputs Jeśli masz Zrób coś do wydruk, zanim zostaną one zamknięte.

The PrimeOutput metoda ensures that these methods are called at the appropriate times.

Metoda postExecute

Zastępowanie PostExecute() Metoda ScriptComponent Klasa podstawowa za każdym razem, gdy masz przetwarzania, które należy wykonać tylko raz tylko wtedy, gdy zostały przetworzone wierszy danych. Na przykład w źródle, możesz zamknąć System.Data.SqlClient.SqlDataReader użycie do załadowania danych na przepływ danych.

Important noteImportant Note:

Kolekcja ReadWriteVariables jest dostępna tylko w PostExecute Metoda. W związku z tym użytkownik nie może bezpośrednio zwiększać wartość zmiennej pakiet, każdy wiersz danych są przetwarzane.Zamiast tego należy zwiększyć wartość zmiennej lokalnej i zestaw wartość zmiennej pakiet do wartości zmiennej lokalnej w PostExecute Metoda po wszystkich danych została przetworzona.

Metoda ReleaseConnections

urządzenie źródłowe i miejsca docelowe zwykle muszą łączyć się z zewnętrznym źródłem danych.Zastępowanie ReleaseConnections() Metoda ScriptComponent utworzyć klasy, aby zamknąć i Zwolnij połączenie, które były wcześniej otwierane w AcquireConnections(Object) Metoda.

    Dim connMgr As IDTSConnectionManager100
...
    Public Overrides Sub ReleaseConnections()

        connMgr.ReleaseConnection(sqlConn)

    End Sub
    IDTSConnectionManager100 connMgr;

    public override void ReleaseConnections()
    {

        connMgr.ReleaseConnection(sqlConn);

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