Tworzenie funkcji do pobierania danych zmian
Po zakończeniu przepływ sterowania Integration Services pakiet, który wykonuje przyrostowe obciążenie Zmień dane następnego zadania jest utworzenie funkcja zwracająca tabelę , pobiera dane Zmień.Trzeba utworzyć tę funkcję, jeden czas przed pierwszym przyrostowe obciążenia.
Ostrzeżenie
Tworzenie funkcja pobrać zmiana danych jest drugi krok w procesie tworzenia pakiet wykonuje przyrostowe obciążenie zmiany danych.Opis ogólny proces tworzenia tego pakiet, 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 zmiana danych przechwytywania funkcje
Aby pobrać dane zmiany, składnik źródło przepływ danych pakiet wywołuje jedną z następujących funkcji kwerendy przechwytywania danych zmiana:
CDC.fn_cdc_get_net_changes_<capture_instance> dla tej kwerendy, jeden wiersz dla każdej aktualizacji zwracane zawiera stan końcowy każdej zmienionych wierszy.W większości przypadków wystarczy tylko dane zwracane przez kwerendy dla zmiany netto.Aby uzyskać więcej informacji, zobacz CDC.fn_cdc_get_net_changes_<capture_instance> (języka Transact-SQL).
CDC.fn_cdc_get_all_changes_<capture_instance> Ta kwerenda zwraca wszystkie zmiany, które miały miejsce w każdym wierszu w trakcie przechwytywania interwał.Aby uzyskać więcej informacji, zobacz CDC.fn_cdc_get_all_changes_<capture_instance> (języka Transact-SQL).
Składnik źródło następnie przyjmuje wyniki zwróconych przez funkcja i przekazuje je do przekształcenia niższego rzędu i obiekt docelowys, którego dotyczą dane zmiany ostatni obiekt docelowy.
Jednakże Integration Services źródło składnika nie można wywołać funkcji przechwytywania danych zmian bezpośrednio. Integration Services Źródło składnik wymaga metadane dotyczące kolumny, kwerenda zwraca.Zmiana funkcji przechwytywania danych definiuje kolumny tabela ich wyników.W ten sposób te funkcje nie zwracają wystarczające metadane dla Integration Services źródło składnika.
Zamiast tego należy użyć funkcja oródwierszową otoki, ponieważ tego rodzaju funkcja jawnie definiuje kolumny tabela swoich danych wyjściowych w jej klauzula zwraca.Definicja ta jawne kolumn zawiera metadane Integration Services źródło potrzebom składnik.Należy utworzyć tę funkcja dla każdej tabela, dla której chcesz pobrać zmiany danych.
Istnieją dwie opcje tworzenia tabela-wycenione otoki funkcji, która wywołuje funkcja kwerendy przechwytywania danych zmian:
Można wywołać sys.sp_cdc_generate_wrapper_function systemu przechowywane procedury, aby utworzyć tabela-wycenione funkcji dla Ciebie.
Można napisać swoją własną funkcja zwracająca tabelę za pomocą wytycznych i przykładzie w tym temacie.
Wywołuje procedurę przechowywaną, aby utworzyć funkcję śródwierszową
Najłatwiejszym i najszybszym sposobem tworzenia tabela-ważnych funkcji, potrzebne jest wywołanie sys.sp_cdc_generate_wrapper_function systemu procedura składowana.Ta procedura składowana generuje skryptów do tworzenia otoki funkcje, które są zaprojektowane z myślą o potrzebach Integration Services źródło składnika.
Ważne: |
|---|
Sys.sp_cdc_generate_wrapper_function systemowa procedura składowana bezpośrednio nie tworzyć funkcje otoki.Zamiast tego procedura składowana generuje skrypty tworzenia otoki funkcji.Deweloper musi uruchamiać skrypty tworzenia, procedura składowana generuje przed pakiet przyrostowe obciążenia można wywoływać funkcje otoki. |
Aby zrozumieć, jak używać to systemowa procedura składowana, należy przeanalizować procedury działanie, jakie skrypty generuje procedury, i jakie otoki funkcje skryptów tworzenia.
Opis i przy użyciu procedury przechowywanej
Sys.sp_cdc_generate_wrapper_function systemowa procedura składowana generuje skrypty tworzenia otoki funkcji do użycia przez Integration Services pakietów.
Oto kilka pierwszych linii definicja procedura składowana:
CREATE PROCEDURE sys.sp_cdc_generate_wrapper_function
(
@capture_instance sysname = null
@closed_high_end_point bit = 1,
@column_list = null,
@update_flag_list = null
)
Wszystkie parametry procedura składowana są opcjonalne.Jeśli bez podawania wartości dla każdego z parametrów procedura składowana, procedura składowana tworzy funkcje otoki dla wszystkich wystąpień przechwytywania, do których ma dostęp.
Ostrzeżenie
Aby uzyskać więcej informacji o składni tej procedura składowana i jego parametrów, zobacz sys.sp_cdc_generate_wrapper_function (języka Transact-SQL).
procedura składowana zawsze generuje funkcja otoki zwrócić wszystkie zmiany z każdego przechwytywania wystąpienie.Jeśli @supports_net_changes został parametr zestaw podczas tworzenia instancji przechwytywania procedura składowana generuje również funkcja otoki zwrócić obroty netto z każdej instancji przechwytywania stosuje.
procedura składowana zwraca zestaw wyników zawierający dwie kolumny:
Nazwa funkcja otoki wygenerowanego procedura składowana.Ta procedura składowana pochodzi nazwa przechwyceniem nazwa funkcja wystąpienie nazwy.(Nazwa funkcja jest "fn_all_changes_" następuje nazwa wystąpienie przechwytywania.Prefiks używany dla funkcja obroty netto, jeśli jest tworzony, jest "fn_net_changes_").
Instrukcja CREATE funkcja otoki.
Opis i skryptów utworzonych przez procedurę przechowywaną
Zwykle deweloper użyje INSERT...Instrukcja EXEC wywołania sys.sp_cdc_generate_wrapper_function procedura składowana i Zapisz skrypty, które tworzy procedura składowana do tabela tymczasowa.Każdy skrypt może następnie zostać indywidualnie zaznaczone i uruchomić w celu utworzenia odpowiednich funkcja otoki.Jednak Projektant może również używać jednego zestaw poleceń SQL do uruchamiania skryptów tworzenia jak pokazano w poniższym kodzie przykładowych:
create table #wrapper_functions
(function_name sysname, create_stmt nvarchar(max))
insert into #wrapper_functions
exec sys.sp_cdc_generate_wrapper_function
declare @stmt nvarchar(max)
declare #hfunctions cursor local fast_forward for
select create_stmt from #wrapper_functions
open #hfunctions
fetch #hfunctions into @stmt
while (@@fetch_status <> -1)
begin
exec sp_executesql @stmt
fetch #hfunctions into @stmt
end
close #hfunctions
deallocate #hfunctions
Opis i za pomocą funkcji, utworzony przez procedurę przechowywaną
Systematycznie zaprezentuje osi czasu Zmień przechwycone dane, funkcje wygenerowanych otoki oczekuje, że @end_time parametr dla jednego przedziału będzie @start_time parametr dla kolejnych interwał.Niniejsza Konwencja jest stosowana, funkcje otoki generowane można wykonać następujące zadania:
Mapowanie data /czas wartości na wartości LSN, które są używane wewnętrznie.
Upewnij się, że dane nie zostanie utracony lub powtarzane.
Aby badanie wszystkich wierszy w tabela Zmiana prostsze, funkcje wygenerowanych otoki obsługują następujące konwencje:
Jeśli parametr @ start_time ma wartość null, funkcje otoki użyć najniższej wartości LSN w przechwytywania wystąpienie jako dolną granicą kwerendy.
Jeśli parametr @ end_time ma wartość null, funkcje otoki przechwytywania jest korzystać z najwyższą wartość LSN wystąpienie jako górna granica kwerendy.
Większość użytkowników powinny móc używać funkcji, otoka sys.sp_cdc_generate_wrapper_function systemowa procedura składowana tworzy bez modyfikacji.Jednakże aby dostosować funkcje otoki, należy dostosować tworzenie skryptów przed uruchomieniem skryptów.
Gdy pakiet wywołuje funkcje otoki, pakiet należy podać wartości parametrów trzy.Te trzy parametry są jak trzy parametry, że funkcje przechwytywania danych zmian.Te trzy parametry są następujące:
Data początkowa /czas wartość i datę końcową /czas wartość interwału.Podczas gdy funkcje otoki data /czas wartości jako punkty końcowe interwał kwerendy, zmień dane przechwytywania funkcje użycia dwóch LSN wartości jako punktów końcowych.
Filtr wiersza.Dla funkcji otoki i zmień dane przechwytywania funkcje, @row_filter_option parametr jest taki sam.Aby uzyskać więcej informacji, zobacz CDC.fn_cdc_get_all_changes_<capture_instance> (języka Transact-SQL) i CDC.fn_cdc_get_net_changes_<capture_instance> (języka Transact-SQL).
zestaw wyników Zwrócone przez includesthe funkcje otoki następujących danych:
Zmienić wszystkie żądane kolumny danych.
Kolumna o nazwie __CDC_OPERATION, używający jednego lub dwóch znaków pole do identyfikowania operacji, który jest skojarzony z wierszem.Prawidłowe wartości dla tego pole są następujące: D "I" do wstawiania, "delete 'uo' dla aktualizacji wartości stare i 'UN" dla wartości nowych aktualizacji.
Aktualizacja flag, gdy zażąda ich wyświetlane jako kolumny bit po kod operacji i w kolejności określonej w @update_flag_list parametru.Dołączając "_uflag" do nazwy skojarzonej kolumna noszą nazwy tych kolumn.
Jeśli pakiet wywołuje funkcję otoki tej kwerendy dla wszystkich zmian, funkcja otoki również zwraca kolumny, __CDC_STARTLSN i __CDC_SEQVAL.Te dwie kolumny stają się pierwszą i drugą kolumnę odpowiednio zestaw wyników.Funkcja otoki również sortuje zestaw wyników na podstawie tych dwóch kolumn.
Funkcja wartość tabeli pisania
Można również użyć SQL Server Management Studio do pisania własnych tabela-otoki ważnych funkcji, która wywołuje Zmień dane kwerendy funkcja przechwytywania i przechowywać tabela-wycenione otoki funkcji w SQL Server.Aby uzyskać więcej informacji na temat tworzenia funkcja języka Transact-SQL, zobacz CREATE FUNCTION (Transact-SQL).
Poniższy przykład definiuje funkcja zwracająca tabelę , pobiera zmian z tabela Nabywca zmiana określonego interwału.Ta funkcja wykorzystuje zmiany danych przechwytywania funkcje mapowania datetime wartości do pliku binarnego numer sekwencyjny dziennika (LSN) wartości tabeli Zmiana jest używana wewnętrznie.Ta funkcja obsługuje także kilka specjalnych warunków:
Gdy wartość null jest przekazywany dla początkowej czas, funkcja ta używa najwcześniejszej wartości.
Gdy wartość null jest przekazywana do zakończenia czas, funkcja ta używa najnowszych wartości.
Podczas początkowej LSN jest równa LSN końcowy, który zazwyczaj wskazuje, że nie ma żadnych rekordów zaznaczonego interwału, funkcja kończy działanie.
Przykład funkcji kwerendy o Zmień dane wartości z tabeli
CREATE function CDCSample.uf_Customer (
@start_time datetime
,@end_time datetime
)
returns @Customer table (
CustomerID int
,TerritoryID int
,CustomerType nchar(1)
,rowguid uniqueidentifier
,ModifiedDate datetime
,CDC_OPERATION varchar(1)
) as
begin
declare @from_lsn binary(10), @to_lsn binary(10)
if (@start_time is null)
select @from_lsn = sys.fn_cdc_get_min_lsn('Customer')
else
select @from_lsn = sys.fn_cdc_increment_lsn(sys.fn_cdc_map_time_to_lsn('largest less than or equal',@start_time))
if (@end_time is null)
select @to_lsn = sys.fn_cdc_get_max_lsn()
else
select @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal',@end_time)
if (@from_lsn = sys.fn_cdc_increment_lsn(@to_lsn))
return
-- Query for change data
insert into @Customer
select
CustomerID,
TerritoryID,
CustomerType,
rowguid,
ModifiedDate,
case __$operation
when 1 then 'D'
when 2 then 'I'
when 4 then 'U'
else null
end as CDC_OPERATION
from
cdc.fn_cdc_get_net_changes_Customer(@from_lsn, @to_lsn, 'all')
return
end
go
Pobieranie dodatkowych metadanych z Zmień dane
Chociaż utworzyć użytkownika funkcja zwracająca tabelę pokazano tylko wcześniejszych zastosowań operacji $ __ kolumna, cdc.fn_cdc_get_net_changes_<capture_instance> funkcja zwraca cztery kolumna metadane dla każdego wiersza Zmień.Jeśli chcesz użyć tych wartości przepływ danych można zwrócić je jako dodatkowe kolumny z wartościami przechowywanymi w tabela otoki funkcja.
Nazwa kolumny |
Typ danych |
Opis |
|---|---|---|
__$ start_lsn |
binary(10) |
LSN skojarzonych z transakcją zatwierdzanie zmiany. Wszystkie zmiany w tej samej zatwierdzanie udziału tej samej zatwierdzanie LSN.Na przykład, jeśli aktualizacja operacji na źródło dwóch różnych wierszach modyfikuje tabeli, Tabela Zmiana będzie zawierał cztery wiersze (dwoma wartościami stary) i dwa nowe wartości każdego z tym samym __$ start_lsn wartość. |
__$ seqval |
binary(10) |
Sekwencja wartość używana do zamówienia zmiany wiersza w transakcji. |
__$ operacji |
int |
język edycji danych (DML) operację skojarzoną z zmiany.Może być jedną z następujących czynności: 1 = Usuń 2 = Wstaw 3 = aktualizacji (wartości przed operacją update). 4 = aktualizacji (wartości po operacji aktualizacji). |
__$ update_mask |
varbinary(128) |
Maskę bitową, która jest oparta na liczby porządkowe kolumna tabela Zmiana identyfikacji tych kolumn, które zmienione.Wartość ta może zbadać, gdyby określenie kolumny, które uległy zmianie. |
<kolumny tabela przechwyconych źródło> |
zmienny |
Pozostałe kolumny zwróconych przez funkcja są kolumny z źródło tabela, które zostały zidentyfikowane jako kolumny przechwyconych podczas tworzenia instancji przechwytywania.Jeśli żadne kolumna pierwotnie określonymi na liście kolumna przechwyconych wszystkich kolumn w źródło tabela są zwracane. |
Aby uzyskać więcej informacji, zobacz CDC.fn_cdc_get_net_changes_<capture_instance> (języka Transact-SQL).
Następny krok
Po utworzeniu funkcja zwracająca tabelę że kwerendy dla zmiany danych, następnym krokiem jest rozpocząć projektowanie przepływ danych w pakiecie.
Następny temat:Pobieranie i opis Zmień dane
|
Ważne:
Bieżąco z usług integracji