Tworzenie źródła składnika skryptów
Używanie składnika źródło w przepływ danych Integration Services pakiet do ładowania danych ze źródło danych do przekazania niższego rzędu przekształcenia i miejsc docelowych.Zazwyczaj można podłączyć do źródło danych poprzez istniejące menedżer połączeń.
Aby uzyskać omówienie składnik skryptów, zobacz Rozszerzanie przepływu danych ze składnikiem skryptu.
Składnik skryptów i kodu infrastruktury, generujący można znacznie uprościć proces opracowywania niestandardowego składnik przepływ danych.Jednak aby zrozumieć, jak działa składnik skryptów, użytkownik może być przydatne odczytać kroków, które są zaangażowane w opracowywanie niestandardowy składnik przepływ danych.W sekcji Opracowywanie danych niestandardowy składnik przepływu, szczególnie tematu Rozwijanie niestandardowy składnik źródła.
Wprowadzenie do części źródła
Po dodaniu składnika skryptów do okienka przepływu danych SSIS Projektant, Wybieranie typu składnika skryptu otwiera okno dialogowe i monituje o wybranie źródła, miejsca przeznaczenia lub przekształcenie skryptu.W tym oknie dialogowym Wybierz źródło.
Konfigurowanie składnika źródła w trybie projektowania metadanych
Po wybraniu, aby utworzyć składnik źródło, można skonfigurować składnika za pomocą Script Editor transformacji.Aby uzyskać więcej informacji, zobacz Konfigurowanie składnik skryptów w programie Script Editor składnika.
Składnik źródło przepływ danych ma nie nakładów i obsługuje jeden lub więcej wyjść.Konfigurowanie wyjść dla składnika jest jedną z czynności, które należy wykonać w trybie projektowania metadane za pomocą Script Editor transformacji, zanim napisać niestandardowy skrypt.
Można również określić język skryptów przez ustawienie ScriptLanguage właściwość skryptu strona Script Editor transformacji.
Ostrzeżenie
Aby zestaw domyślny język skryptów dla składników skryptów i zadania skryptu, użyj języka skryptów opcji na Ogólne strona Opcje okno dialogowe.Aby uzyskać więcej informacji, zobacz Strony głównej.
Dodawanie menedżerów połączenia
Zwykle składnik źródło korzysta z istniejących menedżer połączeń do łączenia się ze źródłem danych, z którego go ładuje dane do przepływ danych.Na menedżer połączeńs strona Script Editor transformacji, kliknij Dodaj dodać odpowiednie menedżer połączeń.
Menedżer połączeń jest jednak tylko wygodny jednostkę, która hermetyzuje i przechowuje informacje, które muszą mieć połączyć się z danymi źródło określonego typu.Kod ładowania lub zapisywania danych i ewentualnie Otwórz i zamknij połączenie danych źródło również należy napisać własne niestandardowe.
Aby uzyskać ogólne informacje dotyczące menedżerów połączenia ze składnikiem skryptu, zobacz Połączenia ze źródłami danych w składniku skryptów.
Więcej informacji o Menedżerowie połączenia strona Script Editor transformacji, zobacz Edytor skryptów transformacji (strona menedżerów połączenia).
Konfigurowanie wyjść i kolumn wyjściowych
Składnik źródło ma nie nakładów i obsługuje jeden lub więcej wyjść.Na wejść i wyjść strona Script Editor transformacji, pojedynczy wyjściowego został utworzony domyślnie, ale brak kolumn wyjściowych zostały utworzone.W tym strona edytora, może potrzebne, należy skonfigurować następujące elementy.
Należy dodać i skonfigurować kolumn wyjściowych ręcznie dla każdego wyjścia.Wybierz folder kolumn wyjściowych dla każdego wyjście, a następnie użyj Dodaj kolumnę i Usuń kolumnę przyciski do zarządzania kolumn wyjściowych dla każdego wyjściowe składnika źródło.Później można będzie odnosić się do kolumn wyjściowych skryptu według nazw przypisujące, za pomocą właściwości maszynowy metoda dostępu utworzona w programie automatycznie wygenerowany kod.
Można utworzyć jeden lub więcej dodatkowych wyjść, takie jak wiersze zawierające wartości nieoczekiwane dane wyjściowe symulowanego błędu.Użyj Dodać dane wyjściowe i Usunąć wyjściowego przyciski do zarządzania wyjść składnika źródło.Wszystkie wiersze danych wejściowych są kierowane do wyjść wszystkie dostępne, chyba że określisz identyczną wartość niezerowa dla ExclusionGroup właściwość tych produktów, w którym zamierzasz bezpośredni każdego wiersza do tylko jednego wyjść, które taki sam udział ExclusionGroup wartości.Wybrana wartość całkowitą określonego do identyfikowania ExclusionGroup nie jest istotna.
Ostrzeżenie
Można również użyć innych niż zero ExclusionGroup wartości właściwość z pojedynczym pliku nie można 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żesz przypisać przyjazną nazwę, aby wyjść.Później można będzie odnosić się do wyjść według ich nazw w skrypcie, za pomocą właściwości maszynowy metoda dostępu utworzona w programie automatycznie wygenerowany kod.
Zwykle wiele wyprowadza w tym samym ExclusionGroup mieć tej samej kolumny danych wyjściowych.Jednak jeśli tworzysz wyjścia symulowanego błędu można dodać więcej kolumn do przechowywania informacji o błędzie.Aby uzyskać informacje dotyczące sposobu aparat przepływu danych procesów wierszy błędów, zobacz Użycie wyjść błąd w składniku przepływu danych.Jednak w składniku skrypt musi napisać własny kod do wypełnienia kolumn dodatkowe informacje odpowiednie błąd.Aby uzyskać więcej informacji, zobacz Symulowanie wyjściowe błąd składnika skryptów.
Więcej informacji o wejść i wyjść strona Script Editor transformacji, zobacz Skrypt transformacji edytora (wejść i wyjść strony).
Dodawanie zmiennych
W przypadku wszelkich istniejących zmiennych wartości, których chcesz użyć skryptu, można dodać je w ReadOnlyVariables i ReadWriteVariables właściwość pola na skryptu strona Script Editor transformacji.
Po wprowadzeniu wielu zmiennych w polach właściwość Zmienna nazwy należy oddzielić przecinkami.Wiele zmiennych można także wprowadzać, klikając przycisk wielokropka (…) przycisk Dalej, aby ReadOnlyVariables i ReadWriteVariables pola właściwość i wybranie zmiennych w wybierz zmienne okno dialogowe.
Aby uzyskać ogólne informacje dotyczące zmiennych składnika skryptów, zobacz Korzystanie ze zmiennych składnik skryptów.
Więcej informacji o skryptu strona Script Editor transformacji, zobacz Edytor skryptów transformacji (skrypt strony).
Składnik źródła w trybie projektowania kodu 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.Kliknij, aby otworzyć program VSTA, Edytowanie skryptu na skryptu strona Script Editor transformacji.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.
Ważne informacje dotyczą wszystkich rodzajów składników utworzone przy użyciu składnik skryptów, zobacz Kodowanie i debugowanie składnika skryptów.
Opis automatycznie wygenerowany kod
Po otwarciu VSTA IDE po utworzeniu i konfigurowanie składnika źródło, edytowalne ScriptMain klasy pojawi się w edytorze kodu.Napisać niestandardowy kod ScriptMain klasy
ScriptMain Klasa obejmuje stub dla CreateNewOutputRows metoda.CreateNewOutputRows Jest metoda najważniejszych składników źródło.
Jeśli otworzysz Eksplorator projektu okna w VSTA widać składnik skryptów również został wygenerowany tylko do odczytu, BufferWrapper i ComponentWrapper elementów projektu.ScriptMain Klasa dziedziczy z UserComponent klasy w ComponentWrapper element projektu.
Przy uruchomieniu czas, aparat przepływ danych wywołuje PrimeOutput metoda w UserComponent klasy, które zastępuje PrimeOutput metoda ScriptComponent Klasa nadrzędnaPrimeOutput Metoda wywołuje następujące metody:
CreateNewOutputRows metoda zastępują w ScriptMain dodać wiersze ze źródło danych w wyniku bufory, które są puste najpierw.
FinishOutputs metoda, która jest domyślnie pustyZastąpić tę metoda w ScriptMain do wykonywania jakiegokolwiek przetwarzania, gdy jest to wymagane do zakończenia produkcji.
Prywatnego MarkOutputsAsFinished metoda, która wywołuje SetEndOfRowset metoda ScriptBuffer nadrzędnym klasy do wskazania aparat przepływ danych zakończenia produkcji.Nie trzeba wywołać SetEndOfRowset wyraźnie w swój własny kod.
Pisanie kodu niestandardowego
Aby zakończyć tworzenie składnika niestandardowego źródło, można napisać skrypt w następujących metod dostępnych w ScriptMain klasy
Zastąpić AcquireConnections metoda, aby nawiązać połączenie źródło danych zewnętrznych.Wyodrębnij obiekt połączenia lub informacje wymagane połączenie z menedżer połączeń.
Zastąpić PreExecute metoda ładowania danych, można załadować danych źródłowych w tym samym czas.Na przykład, można wykonać SqlCommand przeciwko ADO.NET połączenia z SQL Server bazy danych i załadowanie danych źródłowych w tym samym czas do SqlDataReader.Jeśli należy załadować źródła danych jednego wiersza w czas (na przykład podczas czytania pliku tekstowego), można załadować dane, jak przeglądać wierszy w CreateNewOutputRows.
Użyj zastąpiona CreateNewOutputRows Metoda dodawania nowych wierszy do buforów wyjściowych puste i wypełnić wartości każdej kolumna w nowych wierszy danych wyjściowych.Użyj AddRow metoda każdego bufor wyjściowy, aby dodać nowy pusty wiersz, a następnie zestaw wartości każdej kolumna.Zazwyczaj skopiowanie wartości z kolumn załadowany z zewnętrznego źródło.
Zastąpić PostExecute metoda zakończy przetwarzanie danych.Na przykład, można zamknąć SqlDataReader używany do ładowania danych.
Zastąpić ReleaseConnections metoda, aby rozłączyć się z zewnętrznego źródło danych, jeśli jest to wymagane.
Przykłady
W poniższych przykładach pokazano kod niestandardowy, który jest wymagany w ScriptMain klasy, aby utworzyć składnik źródło.
Ostrzeżenie
These examples use the Person.Address table in the AdventureWorks2008R2 sample database and pass its first and fourth columns, the int AddressID and nvarchar(30) City columns, through the data flow.Te same dane są używane w źródło, transformacja i przeznaczenia próbek w tej sekcji.Dodatkowe wymagania wstępne i założenia są udokumentowane na przykład każdy.
ADO.Przykład źródło netto
Ten przykład demonstruje składnik źródło, który używa istniejącego ADO.NET menedżer połączeń do ładowania danych z SQL Server tabela do przepływ danych.
Jeśli chcesz uruchamiać ten kod przykładowy, należy skonfigurować pakiet i składnik w następujący sposób:
Tworzenie ADO.NET menedżer połączeń, który używa SqlClient dostawca, aby połączyć się z AdventureWorks2008R2 bazy danych.
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako źródło.
Otwórz Script Editor transformacji.Na wejść i wyjść strona, zmiana nazwy domyślne dane wyjściowe z nazwę bardziej opisową, taką jak MyAddressOutput i dodać i skonfigurować kolumn wyjściowych dwóch AddressID i City.
Na Menedżerowie połączenia strona, dodawanie lub tworzenie ADO.NET menedżer połączeń i nadaj mu nazwę, taką jak MyADONETConnection.
Na skryptu strona, kliknij przycisk Edytowanie skryptu i wprowadź następujący skrypt.Następnie zamknij środowiska programistycznego skryptu i Script Editor transformacji.
Tworzenie i konfigurowanie składnika docelowego, takich jak SQL Server obiekt docelowy, lub składnika docelowego próbki wykazane w Tworzenie docelowych ze składnikiem skryptu, oczekuje, AddressID i City kolumny.Następnie Połącz składnik źródło do obiekt docelowy.(Źródło można podłączyć bezpośrednio do obiekt docelowy bez wszelkie przekształcenia.) Można utworzyć obiekt docelowy tabela, uruchamiając następujące Transact-SQL w AdventureWorks2008R2 bazy danych:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL )
Uruchom próbki.
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); } }
Przykład źródłowego pliku płaski
Ten przykład demonstruje składnik źródło, który używa istniejącego plik prosty menedżer połączeń do ładowania danych z plik prosty do przepływ danych.Płaski pliku źródło danych jest tworzona przez wyeksportowanie ich z SQL Server.
Jeśli chcesz uruchamiać ten kod przykładowy, należy skonfigurować pakiet i składnik w następujący sposób:
Użyj SQL Server Kreatora importu i eksportu wyeksportować Person.Address tabela z AdventureWorks2008R2 przykładowej bazy danych do rozdzielanego przecinkami plik prosty.Próbka ta używa nazwy pliku ExportedAddresses.txt.
Tworzenie pliku prostego menedżer połączeń łączy do plików eksportowanych danych.
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako źródło.
Otwórz Script Editor transformacji.Na wejść i wyjść strona, zmienić domyślne dane wyjściowe z nazwę bardziej opisową, taką jak MyAddressOutput.Dodawanie i konfigurowanie kolumn wyjściowych dwóch AddressID i City.
Na Menedżerowie połączenia strona, dodawanie lub tworzenie pliku prostego połączenia Menedżera, przy użyciu nazwę opisową, taką jak MyFlatFileSrcConnectionManager.
Na skryptu strona, kliknij przycisk Edytowanie skryptu i wprowadź następujący skrypt.Następnie zamknij środowiska programistycznego skryptu i Script Editor transformacji.
Tworzenie i konfigurowanie składnika docelowego, takich jak SQL Server obiekt docelowy, lub składnika docelowego próbki wykazane w Tworzenie docelowych ze składnikiem skryptu.Następnie Połącz składnik źródło do obiekt docelowy.(Źródło można podłączyć bezpośrednio do obiekt docelowy bez wszelkie przekształcenia.) Można utworzyć obiekt docelowy tabela, uruchamiając następujące Transact-SQL w AdventureWorks2008R2 bazy danych:
CREATE TABLE [Person].[Address2]( [AddressID] [int] NOT NULL, [City] [nvarchar](30) NOT NULL )
Uruchom próbki.
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(); } }
|