Tworzenie urządzenie źródłowe składnika skryptów
Składnik źródłowego jest używany w przepływ danych Integration Services pakiet do ładowania danych ze urządzenie źródłowe danych w celu przekazania niższego rzędu przekształcenia i miejsc docelowych. Zazwyczaj można połą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.Jednak aby zrozumieć, w jaki sposób działa składnik skryptów, które mogą być przydatne je odczytać za pomocą kroków, które uczestniczą w tworzeniu składnika przepływ danych niestandardowych.W sekcji Rozwijanie niestandardowy składnik przepływ danych, szczególnie w temacie Developing a Custom Source Component.
Wprowadzenie do korzystania ze składnikiem urządzenie źródłowe
Po dodaniu składnika skryptów do okienka przepływ danych SSIS Projektant, Wybierz typ składnika skryptów , okno dialogowe zostanie otwarte i wyświetlany jest monit o wybranie urządzenie źródłowe, obiekt docelowy lub transformacja skryptu.W tym oknie dialogowym Wybierz urządzenie źródłowe.
Konfigurowanie składnika urządzenie źródłowe w trybie projektowania metadane
Po zaznaczeniu, aby utworzyć składnik urządzenie źródłowe, konfigurowanie składnika za pomocą Skrypt transformacja edytora.Aby uzyskać więcej informacji zobaczConfiguring the Script Component in the Script Component Editor.
przepływ danych urządzenie źródłowe składnika nie ma danych wejściowych i obsługuje jednego lub kilku wyjść.Konfigurowanie wyjścia 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.
Można także określić język skryptów przez ustawienie ScriptLanguage Właściwość Skrypt stronaSkrypt transformacja edytora.
Uwaga
Aby ustawić domyślny język wykonywanie wykonywanie skryptów dla zadania wykonywanie wykonywanie skryptów i składniki wykonywanie wykonywanie skryptów, należy użyć Język wykonywanie wykonywanie skryptów Opcja Ogólne stronaOpcje -okno dialogowe.Aby uzyskać więcej informacji zobaczStrona ogólnych.
Dodawanie Menedżer połączeń
Zazwyczaj składnika urządzenie źródłowe używa zarządcę istniejące połączenia do łączenia się ze źródłem danych, z którego ładuje danych na przepływ 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 jednostkę hermetyzuje i przechowuje informacje, które musi mieć do połączenia ze źródłem danych określonego typu.Należy napisać własny niestandardowy kod do ładowania lub zapisywania danych, a czasem także do otwierających i połączenie z danymi urządzenie źródłowe również.
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 kolumny wyjściowe i wyjścia
Składnik urządzenie źródłowe ma nie danych wejściowych i obsługuje jeden lub więcej wyników.Na Wejść i wyjść stronaSkrypt transformacja edytora, pojedynczy danych wyjściowych został utworzony domyślnie, ale kolumny wyjściowe nie zostały utworzone.Na tej stronie ten edytor może konieczne jest, należy skonfigurować następujące elementy.
Należy dodać i skonfigurować kolumn wyjściowych ręcznie dla każdego produktu.Wybierz folder kolumna wyjściowe dla każdego produktu, a następnie użyj Dodaj kolumna and Usuń kolumna przyciski do zarządzania kolumn wyjściowych dla każdej produkcji części urządzenie źródłowe.Później można będzie odnosić się do kolumn wyprowadzenia w skrypcie według nazw, które można przypisać w tym polu, przy użyciu właściwości wpisywanych metoda dostępu utworzone w ten kod automatycznie generowanej.
Można utworzyć jeden lub więcej dodatkowych wyjść, na przykład danych wyjściowych błąd symulowane wiersze zawierające wartości nieoczekiwane.Użycie Dodawanie danych wyjściowych and Usuwanie danych wyjściowych przyciski do zarządzania wyjść składnika urządzenie źródłowe.Wszystkie wiersze danych wejściowych są kierowane do wszystkich dostępnych wyjść, o ile nie wybierzesz identyczne niezerową wartość dla ExclusionGroup właściwość te dane wyjściowe będą kierować każdy wiersz tylko do jednego z wyjścia, które mają takie same ExclusionGroup wartość. Wybrana wartość określonej liczby całkowitej do identyfikowania ExclusionGroup nie ma znaczenia.
Uwaga
Można również użyć innych niż zero ExclusionGroup wartość właściwość z jednym danych wyjściowych, jeśli nie chcesz wyprowadzić wszystkie wiersze. W tym przypadek jednak należy jawnie wywołać DirectRowTo<outputbuffer> Metoda dla każdego wiersza, który chcesz wysłać dane wyjściowe.
Można przypisać przyjazną nazwę wyjść.Później można będzie odnosić się do wyjść według ich nazw w skrypcie, za pomocą właściwości wpisywanych metoda dostępu utworzone w ten kod automatycznie generowanej.
Zazwyczaj wielu Wyświetla w tym samym ExclusionGroup mają te same kolumny danych wyjściowych. Jednak podczas tworzenia produkcji symulowanego błędu, można dodać więcej kolumn do przechowywania informacji o błędzie.Aby dowiedzieć się, jak przepływ danych wierszy błędów aparatu procesów Zobacz Za pomocą błąd wyjścia w składnik przepływ danych. Jednak w składniku skryptów, należy napisać własny kod, aby wypełnić dodatkowe kolumny z informacjami o odpowiednie.Aby uzyskać więcej informacji zobaczSymulowanie Error wyjścia dla składnika skryptów.
Aby uzyskać więcej informacji na temat Wejść i wyjść stronaSkrypt transformacja edytora, see Skrypt transformacja Edytor (wejściowych i wyjść strona).
Dodawanie zmiennych
W przypadku zmiennych istniejące wartości, których chcesz użyć w skrypcie, możesz je dodać w ReadOnlyVariables i ReadWriteVariables właściwość pola na Skrypt stronaSkrypt transformacja edytora.
Po wprowadzeniu wielu zmiennych w polach właściwość nazwy zmiennych należy oddzielić przecinkami.Można także wprowadzić wiele zmiennych, klikając przycisk wielokropka (…) znajdujący się obok ReadOnlyVariables i ReadWriteVariables właściwość pól i wybranie 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).
Składnik urządzenie źródłowe w trybie projektowania kodu wykonywanie wykonywanie skryptów
After you have configured the metadata for your component, open the Microsoft Visual Studio Tools for Applications (VSTA) IDE to code your custom script.Aby otworzyć VSTA, kliknij przycisk Edytowanie skryptu on the Skrypt stronaSkrypt transformacja edytora.You can write your script by using either Microsoft Visual Basic 2008 or Microsoft Visual C# 2008, depending on the script language selected for the ScriptLanguage property.
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 VSTA IDE po utworzeniu i konfigurowania składnika urządzenie źródłowe, edytowalnych ScriptMain Klasa jest wyświetlana w edytorze kodu. Pisanie kodu niestandardowego ScriptMain Klasa.
The ScriptMain class includes a stub for the CreateNewOutputRows metoda. The CreateNewOutputRows is the most important metoda in a urządzenie źródłowe 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 PrimeOutput Metoda UserComponent klasy, która zastępuje PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda ScriptComponent Klasa nadrzędna. The PrimeOutput metoda in turn calls the following methods:
The CreateNewOutputRows metoda, which you override in ScriptMain to add rows from the data urządzenie źródłowe to the output buffers, which are empty at first.
The FinishOutputs metoda, which is empty by default. Zastąpić tę metoda w ScriptMain Aby wykonać żadnych operacji, który jest wymagany do ukończenia dane wyjściowe.
Prywatnym MarkOutputsAsFinished Metoda, która wywołuje SetEndOfRowset() Metoda ScriptBuffer Klasa nadrzędna, aby wskazać aparat przepływ danych, dane wyjściowe zostało zakończone. Nie trzeba wywołać SetEndOfRowset bezpośrednio w kodzie.
Zapisywanie swój kod niestandardowy
Aby zakończyć tworzenie składnika niestandardowego urządzenie źródłowe, można napisać skrypt w następujących metod w ScriptMain Klasa.
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ń.
Zastępowanie PreExecute metoda w celu załadowania danych, jeśli można załadować danych źródłowych w tym samym czas. Na przykład, można wykonać, SqlCommand przed ADO.NET połączenie z SQL Server bazy danych i załadowanie danych źródłowych w tym samym czas w SqlDataReader. Jeśli należy załadować urządzenie źródłowe danych jeden wiersz naraz (na przykład podczas czytania pliku tekstowego), można załadować danych w pętli do wierszy CreateNewOutputRows.
Za pomocą zastąpiona CreateNewOutputRows metoda dodawania nowych wierszy do buforów wyjściowych puste i wypełnić wartości dla każdej z kolumn w nowych wierszy danych wyjściowych. Użycie AddRow Metoda każdego bufor wyjściowy, aby dodać pusty wiersz nowych a zestaw wartości każdej kolumna. Zazwyczaj skopiowanie wartości z kolumn, ładowane z zewnętrznego urządzenie źródłowe.
Zastępowanie PostExecute Metoda na zakończenie przetwarzania danych. Na przykład, można zamknąć SqlDataReader Czy używasz ładowania danych.
Zastępowanie ReleaseConnections Metoda rozłączyć się z zewnętrznego urządzenie źródłowe danych, jeśli jest to wymagane.
Przykłady
W poniższych przykładach pokazano niestandardowy kod, który jest wymagany w ScriptMain Klasa, aby utworzyć składnik urządzenie źródłowe.
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 ADO.NET urządzenie źródłowe
W przykładzie pokazano urządzenie źródłowe składnik, który używa istniejącego ADO.NET Menedżer połączeń w celu załadowania danych z SQL Server Tabela do przepływ danych.
Jeśli chcesz uruchomić ten kod przykładowy, należy skonfigurować pakiet i składnika w następujący sposób:
Tworzenie ADO.NET Menedżer połączeń, który używa SqlClient Dostawca, aby połączyć się z AdventureWorks bazy danych.
Dodać nowy składnik skryptów do powierzchni projektanta przepływ danych i skonfigurować go jako urządzenie źródłowe.
Otwórz Skrypt transformacja edytora.Na Wejść i wyjść strona, zmiana nazwy domyślne dane wyjściowe z bardziej opisową nazwę, taką jak MyAddressOutputi dodać i skonfigurować dane wyjściowe w dwóch kolumnach, AddressID and Miasto.
Na Menedżer połączeń stron, dodawanie lub tworzenie ADO.NET Menedżer połączeń i nadaj mu nazwę takich jak MyADONETConnection.
Na Skrypt strona, kliknij przycisk Edytowanie skryptu i wpisz skrypt, który następuje.Następnie zamknij środowiska programistycznego skryptu, Skrypt transformacja edytora.
Tworzenie i konfigurowanie składnika docelowego, takie jak SQL Server obiekt obiekt docelowy lub składnika docelowego przykładowych pokazano w Tworzenie obiekt docelowy przy użyciu składnika skryptów, który oczekuje AddressID and Miasto kolumny.Następnie Połącz składnik urządzenie źródłowe do obiekt docelowy.(urządzenie źródłowe można połączyć bezpośrednio do obiekt docelowy, bez żadnych przekształceń.) Można utworzyć 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 )
Uruchom w próbce.
Imports System.Data.SqlClient ... Public Class ScriptMain Inherits UserComponent Dim connMgr As IDTSConnectionManager100 Dim sqlConn As SqlConnection Dim sqlReader As SqlDataReader Public Overrides Sub AcquireConnections(ByVal Transaction As Object) connMgr = Me.Connections.MyADONETConnection sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection) End Sub Public Overrides Sub PreExecute() Dim cmd As New SqlCommand("SELECT AddressID, City, StateProvinceID FROM Person.Address", sqlConn) sqlReader = cmd.ExecuteReader End Sub Public Overrides Sub CreateNewOutputRows() Do While sqlReader.Read With MyAddressOutputBuffer .AddRow() .AddressID = sqlReader.GetInt32(0) .City = sqlReader.GetString(1) End With Loop End Sub Public Overrides Sub PostExecute() sqlReader.Close() 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; SqlDataReader sqlReader; public override void AcquireConnections(object Transaction) { connMgr = this.Connections.MyADONETConnectionManager; sqlConn = (SqlConnection)connMgr.AcquireConnection(null); } public override void PreExecute() { SqlCommand cmd = new SqlCommand("SELECT AddressID, City, StateProvinceID FROM Person.Address", sqlConn); sqlReader = cmd.ExecuteReader(); } public override void CreateNewOutputRows() { while (sqlReader.Read()) { { MyAddressOutputBuffer.AddRow(); MyAddressOutputBuffer.AddressID = sqlReader.GetInt32(0); MyAddressOutputBuffer.City = sqlReader.GetString(1); } } } public override void PostExecute() { sqlReader.Close(); } public override void ReleaseConnections() { connMgr.ReleaseConnection(sqlConn); } }
urządzenie źródłowe plik prosty przykład
W przykładzie pokazano urządzenie źródłowe składnika, który będzie używał zarządcę istniejące połączenie plik prosty do załadowania danych z pliku płaski do przepływ danych.Utworzony przez wyeksportowanie ich z danych źródłowych plik prosty SQL Server.
Jeśli chcesz uruchomić ten kod przykładowy, należy skonfigurować pakiet i składnika w następujący sposób:
Użycie SQL Server Importowanie i Kreatora eksportu wyeksportować Person.Address tabela z AdventureWorks przykładowej bazy danych do rozdzielanego na przecinkami plik prosty.W przykładzie użyto nazwy pliku ExportedAddresses.txt.
Utwórz połączenie pliku płaski menedżera, który łączy się z plikiem eksportowane dane.
Dodać nowy składnik skryptów do powierzchni projektanta przepływ danych i skonfigurować go jako urządzenie źródłowe.
Otwórz Skrypt transformacja edytora.Na Wejść i wyjść strona, zmiana nazwy domyślne dane wyjściowe z bardziej opisową nazwę, taką jak MyAddressOutput.Dodawanie i konfigurowanie kolumn dwa wyjścia AddressID and Miasto.
Na Menedżer połączeń strona, dodawanie lub tworzenie połączenia plik prosty menedżera, za pomocą nazwę opisową, taką jak MyFlatFileSrcConnectionManager.
Na Skrypt strona, kliknij przycisk Edytowanie skryptu i wpisz skrypt, który następuje.Następnie zamknij środowiska programistycznego skryptu, Skrypt transformacja edytora.
Tworzenie i konfigurowanie składnika docelowego, takie jak SQL Server obiekt obiekt docelowy lub składnika docelowego przykładowych pokazano w Tworzenie obiekt docelowy przy użyciu składnika skryptów.Następnie Połącz składnik urządzenie źródłowe do obiekt docelowy.(urządzenie źródłowe można połączyć bezpośrednio do obiekt docelowy, bez żadnych przekształceń.) Można utworzyć 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 )
Uruchom w próbce.
Imports System.IO ... Public Class ScriptMain Inherits UserComponent Private textReader As StreamReader Private exportedAddressFile As String Public Overrides Sub AcquireConnections(ByVal Transaction As Object) Dim connMgr As IDTSConnectionManager100 = _ Me.Connections.MyFlatFileSrcConnectionManager exportedAddressFile = _ CType(connMgr.AcquireConnection(Nothing), String) End Sub Public Overrides Sub PreExecute() MyBase.PreExecute() textReader = New StreamReader(exportedAddressFile) End Sub Public Overrides Sub CreateNewOutputRows() Dim nextLine As String Dim columns As String() Dim delimiters As Char() delimiters = ",".ToCharArray nextLine = textReader.ReadLine Do While nextLine IsNot Nothing columns = nextLine.Split(delimiters) With MyAddressOutputBuffer .AddRow() .AddressID = columns(0) .City = columns(3) End With nextLine = textReader.ReadLine Loop End Sub Public Overrides Sub PostExecute() MyBase.PostExecute() textReader.Close() End Sub End Class
using System.IO; public class ScriptMain: UserComponent { private StreamReader textReader; private string exportedAddressFile; public override void AcquireConnections(object Transaction) { IDTSConnectionManager100 connMgr = this.Connections.MyFlatFileSrcConnectionManager; exportedAddressFile = (string)connMgr.AcquireConnection(null); } public override void PreExecute() { base.PreExecute(); textReader = new StreamReader(exportedAddressFile); } public override void CreateNewOutputRows() { string nextLine; string[] columns; char[] delimiters; delimiters = ",".ToCharArray(); nextLine = textReader.ReadLine(); while (nextLine != null) { columns = nextLine.Split(delimiters); { MyAddressOutputBuffer.AddRow(); MyAddressOutputBuffer.AddressID = columns[0]; MyAddressOutputBuffer.City = columns[3]; } nextLine = textReader.ReadLine(); } } public override void PostExecute() { base.PostExecute(); textReader.Close(); } }
|