Przygotowywanie do kwerendy dla danych, zmienianie
W przepływ sterowania Integration Services pakiet, który wykonuje przyrostowe obciążenie zmiany danych, trzecim i ostateczny zadania jest przygotowanie kwerendy danych zmian i dodać zadanie przepływu danych.
Ostrzeżenie
Drugie zadanie przepływ sterowania jest zapewnienie, że dane Zmiana zaznaczonego interwału jest gotowy.Aby uzyskać więcej informacji dotyczących tego zadania, zobacz Określanie, czy zmiana danych jest gotowy.Opis ogólny proces projektowania przepływ sterowania, zobacz Poprawę przyrostowe ładuje z przechwytywania danych zmian.
Aby zobaczyć pełną, typu end-to-end próbek, które demonstrują użycie zmiana przechwytywania danych w pakietach, zobacz Integration Services próbki na witrynie Codeplex.
Uwagi dotyczące projektowania
Aby pobrać dane zmiany, będzie wywoływać języka Transact-SQL funkcja zwracająca tabelę , akceptuje końcowych interwał jako parametry wejściowe i zwraca zmienić dane dla określonego interwału.A źródło funkcja wywołuje składnik przepływem danych.Aby uzyskać informacje dotyczące tego składnika źródło, zobacz Pobieranie i opis Zmień dane.
Najczęściej używane Integration Services składników źródła, w tym źródeł OLE DB, źródło ADO i źródło netto ADO nie może uzyskać informacji o parametrze funkcja zwracająca tabelę.Dlatego większości źródeł nie można bezpośrednio wywołać funkcja sparametryzowanej.
Są dwie opcje projektowania przekazując parametry wejściowe do funkcja:
Zestawić sparametryzowanych kwerend jako ciąg.Aby połączyć dynamiczny ciąg SQL z wartościami parametrów ustalonych w ciągu, można użyć zadania skryptu lub wykonanie instrukcji SQL.Następnie można przechowywać ten ciąg w zmiennej pakiet i użyć go do zestaw SqlCommand właściwość składnika źródło.To podejście powiedzie się, ponieważ składnik źródło nie wymaga informacji o parametrach.
Ostrzeżenie
Skrypt skompilowanych ponosi mniejszego nakładu pracy niż zadanie wykonanie instrukcji SQL.
Użyj otoki sparametryzowana.Również utworzyć procedura składowana sparametryzowana jako otoka wywołuje sparametryzowana funkcja zwracająca tabelę.To podejście powiedzie się, ponieważ składnik źródło pomyślnie można pobrać informacji dla procedura składowana.
W tym temacie używa pierwszej opcji projektu i montuje kwerendę parametryczną jako ciąg.
Przygotowywanie kwerendy
Przed złączenie wartości parametrów wejściowych w pojedynczy ciąg kwerendy zestaw up zmiennych pakiet, które wymaga kwerendy.
Aby zestaw pakiet zmiennych w górę
W Business Intelligence Development Studio, zmiennych okno Utwórz zmienną o typie danych ciąg do przechowywania ciąg kwerendy, zwracane przez wykonanie zadań SQL.
W tym przykładzie użyto nazwy zmiennej SqlDataQuery.
Zmienną pakiet utworzony można albo skrypt zadania lub wykonanie instrukcji SQL złączanie wartości parametrów wejściowych.Dwie następujące procedury opisują sposób konfigurowania tych składników.
Aby użyć zadania skryptu, aby złączyć ciąg kwerendy
Na Przepływ sterowania kartę, dodać zadania skryptu do pakiet po kontener dla pętli i połączyć kontener pętli dla zadania.
Ostrzeżenie
W tej procedurze założono, że pakiet wykonuje przyrostowe obciążenia z pojedynczej tabela.Jeśli pakiet ładuje z wielu tabel i ma pakietem nadrzędnym z wielu pakietów podrzędność, to zadanie zostałoby dodane jako pierwszy składnik do każdego pakietu podrzędność.Aby uzyskać więcej informacji, zobacz Wykonywanie przyrostowej obciążenia z wielu tabel.
W Script Editor zadania, na skryptu strona, zaznacz następujące opcje:
Dla ReadOnlyVariables, wybierz opcję User::DataReady, User::ExtractStartTime, i User::ExtractEndTime z.
Dla ReadWriteVariables, wybierz z listy User::SqlDataQuery.
W Script Editor zadania, na skryptu strona, kliknij przycisk Edytowanie skryptu otworzyć środowiska programistycznego skryptu.
W procedurze głównej należy wprowadzić kod następujące segmenty:
Jeśli programowaniu w języku C# wprowadź poniższe 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 są programowania 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 wykonanie script.
Zamknij środowiska programistycznego skryptu i Script Editor zadania.
Aby złączyć ciąg kwerendy za pomocą zadań wykonanie instrukcji SQL
Na Przepływ sterowania kartę, dodać zadanie wykonanie instrukcji SQL do pakiet po kontener dla pętli i połączyć kontener pętli dla tego zadania.
Ostrzeżenie
W tej procedurze założono, że pakiet wykonuje przyrostowe obciążenia z pojedynczej tabela.Jeśli pakiet ładuje z wielu tabel i ma pakietem nadrzędnym z wielu pakietów podrzędność, to zadanie zostałoby dodane jako pierwszy składnik do każdego pakietu podrzędność.Aby uzyskać więcej informacji, zobacz Wykonywanie przyrostowej obciążenia z wielu tabel.
W Uruchomić Edytor zadań SQL, na Ogólne strona, zaznacz następujące opcje:
Dla ResultSet, wybierz opcję pojedynczy wiersz.
Skonfiguruj prawidłowe połączenie źródłowa baza danych.
Dla SQLSourceType, wybierz opcję wprowadzania bezpośredniego.
Dla Instrukcja_sql, wprowadź następujące instrukcja języka 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
Ostrzeżenie
else w tej próbce klauzula generuje kwerendy dla ładowania początkowego Zmień dane przekazując wartość null dla data rozpoczęcia i czas.Próbka ta nie usuwa scenariusz, w którym zmian wprowadzonych przed włączeniem przechwytywania danych zmiana również trzeba przekazać do magazyn danych.
Na Mapowanie parametr strona Uruchomić Edytor zadań SQL, wykonaj następujące mapowania:
Parametr 0 mapować zmiennej DataReady.
Parametr 1 mapować zmiennej ExtractStartTime.
Parametr 2 mapować zmiennej ExtractEndTime.
Na Zestaw wyników strona Uruchomić Edytor zadań SQL, mapowanie nazwy wynik do zmiennej SqlDataQuery.
Nazwa wynik jest nazwa pojedynczej kolumna, która jest zwracana SqlDataQuery.
Poprzednie procedury skonfigurować zadanie, które przygotowuje ciąg kwerendy z ciągu ustalonych wartości parametrów wejściowych.Poniższy kod jest przykładem ciąg kwerendy:
select * from CDCSample. uf_Customer('2007-06-11 14:21:58', '2007-06-12 14:21:58')
Dodawanie zadania przepływu danych
Ostatnim krokiem w projektowaniu przepływ sterowania pakiet jest dodać zadanie przepływu danych.
Aby dodać zadanie przepływu danych i ukończyć przepływ sterowania
- Na Przepływ sterowania kartę, dodać zadanie przepływu danych i Połącz zadania tak łączone ciąg kwerendy.
Następny krok
Po przygotowaniu ciąg kwerendy i skonfigurować zadanie przepływu danych jest utworzenie następnego kroku funkcja zwracająca tabelę , pobierze Zmień dane z bazy danych.
Następny temat:Tworzenie funkcji do pobierania danych zmian
|