Preparing to Query for the Change Data
W przepływu sterowania Integration Services pakiet, który wykonuje przyrostowe obciążenie zmiany danych, zadania trzeciej i końcowe przygotowania do kwerendy danych zmiany i dodać zadanie przepływ danych.
Uwaga
Drugie zadanie dla przepływ sterowania jest upewnij się, że zmiana danych dla zaznaczonego interwału jest gotowy.Aby uzyskać więcej informacji na temat tego zadania Zobacz Określanie, czy zmiany są gotowe. Aby uzyskać opis całego procesu projektowania przepływ sterowania zobacz Zwiększanie przyrostowa ładuje z Zmień przechwytywanie danych.
Aby wyświetlić pełną, typu end-to-end próbek, które wykazują stosowania zmian przechwytywania danych w pakietach, wyświetlanie Readme_Change Data Capture for Specified Interval Package Sample i Readme_Change Data Capture since Last Request Package Sample.
Uwagi dotyczące projektowania
Aby pobrać dane zmiany, będzie wywoływać języka Transact-SQL funkcja zwracająca tabelę, akceptuje punkty końcowe interwał jako parametry wejściowe i zwraca zmiany danych w określonym czasie.Składnik źródłowy przepływ danych wywołuje tę funkcja.Aby uzyskać informacje na temat tego składnika urządzenie źródłowe zobacz Trwa pobieranie i opis danych zmian.
Najczęściej używane Integration Services urządzenie źródłowe składnikami, włącznie z źródeł OLE DB, urządzenie źródłowe ADO i urządzenie źródłowe ADO NET nie może uzyskać informacje o parametrach dla funkcja zwracająca tabelę. Dlatego większości źródeł nie można bezpośrednio wywołać funkcja sparametryzowana.
Istnieją dwie możliwości projektowania procesu przesyłania parametry wejściowe do funkcja:
Utworzyć kwerendę parametryczną jako ciąg znaków.Skrypt zadania lub zadania programu wykonać instrukcji SQL służy do łączenia dynamiczne ciąg SQL z ustalonych wartości parametrów w ciąg.Następnie można przechowywać ten ciąg w zmiennej pakiet i używać go do zestaw właściwość SqlCommand składnika urządzenie źródłowe.Tej metody zakończy się pomyślnie, ponieważ składnik urządzenie źródłowe nie wymaga informacje o parametrach.
Uwaga
Skrypt wstępnie skompilowanym wiąże się z mniejszym obciążeniu niż zadania programu wykonać instrukcji SQL.
Za pomocą sparametryzowanych otoki.Alternatywnie można utworzyć sparametryzowana procedura przechowywana jako otoka, który wywołuje funkcja sparametryzowana wycenione tabela.Tej metody zakończy się pomyślnie, ponieważ składnik urządzenie źródłowe mogą pochodzić pomyślnie informacje o parametrach procedura przechowywana.
W tym temacie używa pierwszej opcji projektu i montuje kwerendę parametryczną jako ciąg znaków.
Trwa przygotowywanie kwerendy
Wartości parametrów wejściowych można łączyć w ciąg jednej kwerendy, należy zdefiniować zmienne pakiet, których potrzebuje kwerendy.
Do definiowania zmiennych pakiet
W Business Intelligence Development Studio, w Zmienne okno Utwórz zmienną o typie danych ciąg do przechowania ciąg kwerendy, zwracane przez wykonać zadania programu SQL.
W tym przykładzie nazwa zmiennej SqlDataQuery.
Ze zmienną pakiet utworzony można użyć zadanie skryptu lub zadanie wykonać instrukcji SQL Aby złączyć wartości parametrów wejściowych.Dwie następujące procedury opisano sposób konfigurowania tych składników.
Aby użyć zadania skryptu Aby złączyć ciąg kwerendy
Na Przepływ sterowania Karta dodać zadania skryptu do pakiet po kontener dla pętli i połączyć się z kontenera pętli dla zadania.
Uwaga
W tej procedurze zakłada się, że pakiet wykonuje przyrostowe obciążenia z pojedynczej tabela.Jeśli pakiet ładuje z wielu tabel, a pakiet nadrzędny z wielu pakietów podrzędność, zadanie zostałoby dodane jako pierwszy element do każdego pakietu podrzędność.Aby uzyskać więcej informacji zobaczWykonywanie przyrostowa obciążenia wielu tabel.
W Edytor zadań skryptu, on the Skrypt strona, należy wybrać następujące opcje:
Dla ReadOnlyVariables, select User::DataReady, User::ExtractStartTime, and User::ExtractEndTime z.
Dla ReadWriteVariables, User::SqlDataQuery wybierz z listy.
W Edytor zadań skryptu, on the Skrypt strona, kliknij przycisk Edytowanie skryptu , aby otworzyć środowiska programistycznego skryptu.
W procedurze głównej należy wprowadzić jeden z następujących segmentów kodu:
Jeśli programowaniu w języku C# wpisz następujące wiersze kodu:
int dataReady; System.DateTime extractStartTime; System.DateTime extractEndTime; string sqlDataQuery; dataReady = (int)Dts.Variables["DataReady"].Value; extractStartTime = (System.DateTime)Dts.Variables["ExtractStartTime"].Value; extractEndTime = (System.DateTime)Dts.Variables["ExtractEndTime"].Value; if (dataReady == 2) { sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer('" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractStartTime) + "', '" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) + "')"; } else { sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer(null" + ", '" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) + "')"; } Dts.Variables("SqlDataQuery").Value = sqlDataQuery;
- lub -
Jeśli użytkownik jest programowanie w Visual Basic, wpisz następujące wiersze kodu:
Dim dataReady As Integer Dim extractStartTime As Date Dim extractEndTime As Date Dim sqlDataQuery As String dataReady = CType(Dts.Variables("DataReady").Value, Integer) extractStartTime = CType(Dts.Variables("ExtractStartTime").Value, Date) extractEndTime = CType(Dts.Variables("ExtractEndTime").Value, Date) If dataReady = 2 Then sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer('" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractStartTime) & _ "', '" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) & _ "')" Else sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer(null" & _ ", '" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) & _ "')" End If Dts.Variables("SqlDataQuery").Value = sqlDataQuery
Pozostaw domyślną linię kodu, która zwraca DtsExecResult.Success z wykonania skryptu.
Zamknij środowiska programistycznego skryptu, Edytor zadań skryptu.
Aby złączyć ciąg kwerendy za pomocą zadania programu wykonać instrukcji SQL
Na Przepływ sterowania Karta dodać zadania programu wykonać instrukcji SQL do pakiet po kontener pętli for i połączyć się z kontener pętli dla tego zadania.
Uwaga
W tej procedurze zakłada się, że pakiet wykonuje przyrostowe obciążenia z pojedynczej tabela.Jeśli pakiet ładuje z wielu tabel, a pakiet nadrzędny z wielu pakietów podrzędność, zadanie zostałoby dodane jako pierwszy element do każdego pakietu podrzędność.Aby uzyskać więcej informacji zobaczWykonywanie przyrostowa obciążenia wielu tabel.
W Uruchomić Edytor zadań SQL, on the Ogólne strona, należy wybrać następujące opcje:
Dla ResultSet, select Jeden wiersz.
Należy skonfigurować poprawne połączenie ze źródłową bazą danych.
Dla SQLSourceType, select Bezpośredniego wprowadzania.
Dla SQLStatement, należy wprowadzić następującą instrukcję SQL:
declare @ExtractStartTime datetime, @ExtractEndTime datetime, @DataReady int select @DataReady = ?, @ExtractStartTime = ?, @ExtractEndTime = ? if @DataReady = 2 select N'select * from CDCSample.uf_Customer' + N'('''+ convert(nvarchar(30),@ExtractStartTime,120) + ''', ''' + convert(nvarchar(30),@ExtractEndTime,120) + ''') ' as SqlDataQuery else select N'select * from CDCSample.uf_Customer' + N'(null, ''' + convert(nvarchar(30),@ExtractEndTime,120) + ''') ' as SqlDataQuery
Uwaga
The else klauzula in this sample generates a query for the initial load of change data by passing a null value for the starting date and czas. W tym przykładzie nie dotyczy sytuacji, w których zmiany wprowadzone przed włączeniem przechwytywania danych zmiana również muszą zostać przekazany do magazyn danych.
Na Parametr mapowania stronaEdytor zadań wykonać SQL, wykonaj następujące mapowania:
Mapować zmiennej DataReady parametru 0.
Mapować zmiennej ExtractStartTime parametr 1.
Mapować zmiennej ExtractEndTime parametru 2.
Na Zestaw wyników stronaUruchomić Edytor zadań SQL, mapowanie nazwy wynik do zmiennej SqlDataQuery.
Nazwa wynik jest nazwą jednej kolumnie, która jest zwracana SqlDataQuery.
Poprzednie procedury konfigurowania zadania, które przygotowuje ciąg kwerendy z ciągu ustalonych wartości parametrów wejściowych.W poniższym kodzie to przykładowy ciąg kwerendy:
select * from CDCSample. uf_Customer('2007-06-11 14:21:58', '2007-06-12 14:21:58')
Dodawanie zadanie przepływ danych
Ostatni krok w projektowaniu przepływ sterowania do pakiet jest dodanie zadanie przepływ danych.
Aby dodać zadanie przepływ danych i ukończyć przepływ sterowania
- Na Przepływ sterowania karcie, należy dodać zadanie przepływ danych i Połącz zadania, które połączenie ciąg kwerendy.
Następny krok
Po Przygotowanie ciąg kwerendy i skonfigurować zadanie przepływ danych, następnym krokiem jest utworzyć wycenione tabela funkcja, która będzie pobierać dane zmiany w bazie danych.
Następny temat:Tworzenie funkcja do pobierania danych zmian
|