Podstawy zmian przechwytywanie danych
Wstaw rekordów przechwytywania danych zmian, aktualizowanie i usuwanie działania, która jest stosowana do SQL Server tabela.Szczegóły zmian temu dostępne w formacie łatwo zużytych relacyjnej.Informacje o kolumnie i metadane wymagane do zastosowania zmian do miejsce docelowe środowiska jest przechwycona dla zmodyfikowanych wierszy i przechowywane w tabelach zmiany, które odzwierciedlają strukturę kolumn tabele źródłowe śledzone.Funkcje oródwierszową dostępne są systematyczne dostęp do danych zmian przez konsumentów.
Dobrym przykładem konsumenta danych obszar tej technologii jest wyodrębnianie, transformacja, ładowanie (ETL) aplikacji.Aplikacja ETL stopniowo ładuje Zmień dane z SQL Server źródło tabel do magazyn danych lub składnica danych.Chociaż reprezentację tabel źródłowych w obrębie magazyn danych muszą odzwierciedlać zmiany w tabelach źródłowych, technologii typu end-to-end, odświeżania replika źródło nie jest właściwe.Instead, you need a reliable stream of change data that is structured so that consumers can apply it to dissimilar target representations of the data.SQL Server change data capture provides this technology.
Przechwytywanie danych zmian jest dostępne tylko na wersje Enterprise Developer i oceny SQL Server.
Zmień dane przechwytywania przepływu danych
Na poniższej ilustracji przedstawiono przepływ danych głównych zmian przechwytywania danych.
Źródło danych zmiana zmień przechwytywania danych jest SQL Server można transakcjiWstawiania, aktualizacji i usuwania są stosowane do tabel śledzone źródło, wpisy, które opisują te zmiany są dodawane do dziennika.Dziennik służy jako wsad do procesu przechwytywania przechwytywania danych zmian. Odczytuje dziennik i dodaje informacje o zmianach w tabela prześledzone zmiany skojarzone tabela.Funkcje są dostarczane do wyliczenia zmian, które pojawiają się w tabelach zmiana nad określonego zakres zwróceniem informacji w formie zestaw wyników filtrowane.Zestaw wyników filtrowane zazwyczaj jest używany przez proces aplikacji do aktualizowania reprezentacji źródło w niektórych środowiska zewnętrznego.
Opis przechwytywania danych zmian i wystąpienie przechwytywania
Zanim można śledzić zmiany żadnych poszczególnych tabel w bazie danych, zmień przechwytywania danych musi być jawnie włączone dla bazy danych.Jest to zrobić przy użyciu procedura składowana sys.sp_cdc_enable_db.Gdy baza danych jest włączona, źródło tabele mogą być zidentyfikowane jako tabele śledzone za pomocą procedura składowana sys.sp_cdc_enable_table.Podczas przechwytywania danych zmiana tabela jest włączone, tworzone jest wystąpienie skojarzone przechwytywania do wspierania upowszechniania zmiany danych w źródło tabela.Wystąpienie przechwytywania składa się z tabela Zmiana i dwóch funkcji kwerendy.Metadane opisujące szczegóły konfiguracja wystąpienie przechwytywania jest zachowywana w tabelach metadanych przechwytywania danych zmiana cdc.change_tables, cdc.index_columns, i cdc.captured_columns.Informacje te mogą być pobierane za pomocą procedura składowana sys.sp_cdc_help_change_data_capture.
Wszystkie obiekty, które są skojarzone z wystąpienie przechwytywania są tworzone w schemacie przechwytywania danych zmiana włączoną bazę danych.Wymagania dotyczące przechwytywania wystąpienie nazwa jest to być nazwa prawidłowego obiektu i że być unikatowe w przechwytywania bazy danych wystąpienies.Domyślnie, nazwa jest <nazwę schematu_Nazwa tabela> z źródło tabela.Jego skojarzony Zmień tabela o nazwie dołączając CT do przechwytywania wystąpienie nazwy.Funkcja, która jest używana do kwerendy dla wszystkich zmian o nazwie dołączając fn_cdc_get_all_changes do przechwytywania wystąpienie nazwy.Jeśli wystąpienie przechwytywania jest skonfigurowany do obsługi net changes, net_changes kwerendy funkcja jest również utworzone i nazwane dołączając fn_cdc_get_net_changes_ do nazwy instancji przechwytywania.
Zmienianie tabeli
Pierwsze pięć kolumn tabela Zmiana przechwytywania danych zmiany są kolumny metadane.Te zawierają dodatkowe informacje dotyczące zmiany zarejestrowane.Pozostałe kolumny dublowania zidentyfikowanych przechwyconych kolumny z źródło tabela w polu Nazwa i zazwyczaj w polu Typ.kolumna te przechowują dane przechwycone kolumna zebranych z źródło tabela.
Każdy Wstawianie lub usuwanie operacji, która jest stosowana do źródło tabela jest wyświetlany jako pojedynczy wiersz w tabela Zmiana.kolumna danych w wierszu, wyniki z operacji wstawiania zawierają wartości kolumna po insert.kolumna danych w wierszu, wyniki z operacji usuwania zawierają wartości kolumna przed delete.Operacji aktualizacji wymaga jednego wiersza entryto określenie wartości kolumna przed aktualizacją, a drugi wpis wiersza, aby określić kolumna wartości po aktualizacji.
Każdy wiersz w tabela Zmiana zawiera również dodatkowe metadane w celu umożliwienia interpretacji zmiany aktywności.Kolumna __$start_lsn identyfikuje numer sekwencyjny dziennika zatwierdzanie (LSN) który został przypisany do zmiany.Zatwierdź LSN zarówno identyfikuje zmian, które zostały przyznane w ramach tej samej zatwierdzanie oraz zamówienia tych zatwierdzanie.Kolumna __$seqval można zamówić więcej zmian, które występują w tej samej transakcji.Kolumna __$operation operacji, która jest skojarzona z zmiany rekordów: 1 = Usuń, 2 = Wstaw, 3 = aktualizacji (przed obrazu) i 4 = aktualizacji (po obrazu).Kolumna __$update_mask jest maski bitowej zmiennej o jeden bit zdefiniowane dla każdej kolumny przechwycone.Insert i delete, maska aktualizacji zawsze zapisów wszystkich bitów zestaw.Aktualizacja wierszy, jednakże, będzie miał tylko tych bitów zestaw odpowiadają zmienione kolumny.
Zmień dane przechwytywania interwału dla bazy danych
Zmiana danych przechwytywania interwału dla bazy danych jest czas podczas zmiany, które jest dostępne dla wystąpień przechwytywania danych.Okres ważności rozpoczyna się po pierwsze wystąpienie przechwytywania jest tworzony dla tabela bazy danych i kontynuuje obecne czas.
Dane złożone w tabelach zmiany będzie rosnąć unmanageably, jeśli użytkownik nie okresowo i systematycznie Oczyść danych.Proces oczyszczania przechwytywania danych zmiana jest odpowiedzialny za egzekwowanie zasad opartych na retencji oczyszczania.Najpierw przenosi niski końcowy okres ważności do zaspokojenia czas ograniczeń.Następnie należy go removrd wygasłych wpisów tabela zmian.Domyślnie zachowywana jest trzy dni z danymi.
Koniec wysoki, co przechwytywanie proces zatwierdza każdej nowej partia Zmień dane nowe wpisy są dodawane do cdc.lsn_time_mapping dla każdej transakcji zawierającego zmień wpisy tabela.W tabela mapowania zatwierdzanie numer sekwencji dziennika (LSN) i zatwierdzanie zatwierdzanie czas (kolumny start_lsn i tran_end_time, odpowiednio) są zachowywane.Maksymalna wartość LSN, który znajduje się w cdc.lsn_time_mapping reprezentuje znacznik wysokiej wody okno ważności bazy danych.Jego czas odpowiednich zatwierdzanie jest używany jako podstawy, z której Oczyszczanie retencji podstawie oblicza nowego znaku niskiej wody.
Ponieważ proces przechwytywania ekstrakty Zmień dane z dziennika transakcji, wbudowane w występuje opóźnienie między czas jest zaangażowana w tabela źródłowej zmiany i czas że zmiana pojawi się w swojej tabela skojarzone zmiany.Podczas tego opóźnienie jest zazwyczaj mała jest jednak pamiętać, że zmiana danych nie jest dostępny, dopóki proces przechwytywania przetworzyła wpisy dziennika pokrewne.
Zmień dane przechwytywania interwału dla wystąpienia przechwytywania
Chociaż wspólnej bazy danych okres ważności i okres ważności wystąpienie poszczególnych przechwytywania najbardziej zbieżnie, to nie zawsze jest true.Okres ważności wystąpienia przechwytywania uruchamiany podczas procesu przechwytywania rozpozna wystąpienie przechwytywania i uruchamia logowania skojarzone zmiany jego zmiana tabela.W wyniku przechwytywania wystąpienia są tworzone w różnym czasie, każdy początkowo ma różne niski punktu końcowego. start_lsn kolumna jest zestaw wyników zwróconych przez sys.sp_cdc_help_change_data_capture pokazuje bieżącego punktu końcowego niskie dla każdego wystąpienie określonych przechwytywania.Gdy proces oczyszczania utraciły wpisy tabela zmian, dostosowuje start_lsn wartości dla wszystkich wystąpień przechwytywania odzwierciedlić nowe wody niskiej znak zmiany dostępnych danych.Przechwytywanie tylko te wystąpienia, które mają start_lsn są korygowane wartości, które są obecnie mniej niż nowego znaku niskiej wody.Nad czas, jeśli nie nowe instancje przechwytywania są tworzone, interwałów ważności dla wszystkich poszczególnych wystąpień będzie zwykle zbiegać się okres ważności bazy danych.
Okres ważności jest ważne dla konsumentów Zmień dane, ponieważ interwał ekstrakcji na żądanie muszą być całkowicie objęte bieżące zmiany danych przechwytywania interwału dla wystąpienie przechwytywania.W przypadku niskiej końcowy interwał ekstrakcji na lewo od niskich końcowy okres ważności może brakować danych zmian z powodu skuteczniejsze narzędzie.W przypadku wysokiej końcowy interwał ekstrakcji prawo wysoki punkt końcowy okres ważności, proces przechwytywania nie przetwarzane jeszcze przez czas okres który reprezentowane przez interwał ekstrakcji i zmień dane może także brakować.
Funkcja sys.fn_cdc_get_min_lsn jest używana do pobierania bieżącego minimalnego LSN wystąpienie przechwytywania, podczas gdy sys.fn_cdc_get_max_lsn można pobrać obecną wartość maksymalna LSN.Podczas badania zmiany danych, jeśli określony zakres LSN nie leży w tych dwóch wartości LSN, funkcji kwerendy przechwytywania danych zmiana nie powiedzie się.
Obsługiwanie zmian tabel źródłowych
Aby uwzględnić zmiany kolumny w źródło tabel, które są śledzone jest trudny problem dla konsumentów niższego rzędu.Chociaż włączenie zmienić przechwytywania danych na źródło tabeli nie zapobiec takie zmiany DDL, zmień dane przechwytywania pomaga zmniejszyć wpływ na konsumentów poprzez umożliwienie zestawów wyników dostarczonych, zwracanych za pośrednictwem interfejsu API pozostał niezmieniony nawet jako podstawowej struktury kolumna źródło tabela zmiany.To stała kolumna struktury jest również odzwierciedlany w tabela podstawowej, zmiana że kwerenda określonych funkcji dostępu.
Aby umożliwić stałą kolumna tabela Zmiana struktury, odpowiedzialne za wypełnianie tabela Zmiana procesu przechwytywania zignoruje dowolne nowe kolumna, które nie są zidentyfikowane dla przechwytywania podczas źródło tabela został włączony do przechwytywania danych zmiana.Po przerwaniu śledzone kolumna wartości null będą dostarczane dla kolumna w zapisach późniejszych zmianach.Jednak jeśli istniejącej kolumna podlega zmianie jego typu danych, zmiana została rozpropagowana do tabela zmiany do zapewnienia, że mechanizm przechwytywania nie wprowadzają utraty danych do kolumn prześledzone.Proces przechwytywania księguje się także wszelkie wykryte zmiany struktury kolumna tabel rejestrowane w tabela cdc.ddl_history.Konsumenci chcą otrzymywać korekt, które może być dokonywane w aplikacjach niższego rzędu, użyj procedura składowana sys.sp_cdc_get_ddl_history.
Zazwyczaj bieżące wystąpienie przechwytywania będą nadal zachowuje swój kształt DDL zmiany są stosowane do jego skojarzony źródło tabela.Jednak jest możliwe utworzenie drugiego wystąpienie przechwytywania dla tabela, która odzwierciedla strukturę nowej kolumna.Umożliwia to proces przechwytywania wprowadzić zmiany do tej samej źródło tabela na dwie tabele distinct zmian mających dwie kolumna różnych struktur.W ten sposób podczas jednej tabela zmiany można kontynuować podawanie bieżących programów operacyjnych, drugi dysk można środowiska programowania, który próbowano dołączyć nowe dane kolumna.Zezwalanie mechanizm przechwytywania do wypełniania obie tabele zmiana współpracującą oznacza, że przejście od jednego do drugiego mogą być realizowane bez utraty danych zmian.Taka sytuacja może wystąpić dowolny czas dwóch zmienić przechwytywania danych czaslinie nakładania.Gdy następuje przejście wystąpienie przestarzałe przechwytywania można usunąć.
Ostrzeżenie
Maksymalna liczba wystąpień przechwytywania, które mogą być jednocześnie skojarzone z jednego źródła tabela jest dwa.
Związek między zadania przechwytywania i Logreader replikacji transakcyjnej
Logikę procesu przechwytywania danych zmiana jest osadzony w procedurze przechowywanej sp_replcmds, funkcja wewnętrznego serwera zbudowany jako część sqlservr.exe i również używane przez replikacja transakcyjna do zmiany z dziennika transakcji.Po włączeniu zmiany samego przechwytywania danych dla bazy danych utworzyć zmiany przechwytywania danych SQL Server Agent przechwytywania zadanie jako pojazd do wywoływania sp_replcmds.Gdy obecny jest replikacja, logreader transakcyjnych samodzielnie jest używany do zaspokojenia potrzeb zmiany danych w obu tych konsumentów.Strategia ta znacznie zmniejsza rywalizacja dziennika podczas replikacja i przechwytywania danych zmiany są włączone dla tej samej bazy danych.
Przełączanie między tych dwóch trybów operacyjnych do zmiany danych zostanie automatycznie przy każdej zmianie statusu replikacja przechwytywania danych zmiana przechwytywania włączone bazy danych.
Ważne: |
---|
Oba wystąpienia logiki przechwytywania wymagają SQL Server Agent działa na wykonać procesu. |
Główne zadania zmiany procesu przechwytywania przechwytywania danych jest dziennik skanowania i zapisywać dane kolumna i transakcji pokrewne informacje do zmiany danych przechwytywania zmiany tabel.W celu zapewnienia transakcyjnie spójne granicę przez wszystkie zmiany danych przechwytywania Zmiana tabel, które go wypełnia, proces przechwytywania otwiera i zatwierdza transakcji w każdym cyklu skanowania.Wykrywa tabel nowo są włączone do przechwytywania danych zmiany i automatycznie umieszcza je w zestaw z tabel, które aktywnie monitorowane wpisy dziennika zmian.Podobnie, wyłączenie Zmień dane przechwytywania zostanie również wykryty, powodując źródło tabela ma zostać usunięty z zestaw tabel, aktywnie monitorowane pod kątem zmian danych.Po zakończeniu przetwarzania sekcji dziennika proces przechwytywania sygnały logiki obcinania dziennika serwera, który używa tych informacji do identyfikacji kwalifikujących się do obcinania wpisów dziennika.
Ostrzeżenie
Gdy jest włączona bazy danych zmiany przechwytywania danych, nawet jeśli jest w trybie odzyskiwania zestaw do odzyskiwania proste punkt obcinania dziennika zostanie nie wcześniej aż wszystkie zmiany, które są oznaczone do przechwytywania zostały zebrane przez proces przechwytywania.Jeśli proces przechwytywania nie jest uruchomiona, istnieją zmiany zbierane wykonywanie punktu kontrolnego nie obcinają dziennika.
Proces przechwytywania służy również do przechowywania historia zmian DDL śledzone tabel.Instrukcje DDL, skojarzonych z przechwytywania danych zmiana wprowadzać wpisy dziennika transakcji bazy danych zawsze, gdy zmiana danych włączone przechwytywania bazę danych lub porzucone tabela lub dodane, zmodyfikowane lub porzucone kolumny tabela włączone przechwytywania danych zmian.Te wpisy dziennika są przetwarzane przez proces przechwytywania, który następnie księguje skojarzone zdarzenia DDL w tabela cdc.ddl_history.Można uzyskać informacji o zdarzeniach DDL, które wpływają na tabele śledzone za pomocą procedura składowana sys.sp_cdc_get_ddl_history.
Zmień dane przechwytywania zadania agenta
Dwa SQL Server zadania agenta są zazwyczaj związane z bazy danych zmiany danych przechwytywania włączone: wykorzystywany do wypełniania tabel bazy danych zmiany i który jest odpowiedzialny za zmienić Oczyszczanie tabela.Oba zadania składają się z jednym kroku, który uruchamia Transact-SQL polecenia. Transact-SQL Polecenia, który jest wywoływany jest procedura składowana, która implementuje logikę zdefiniowane przechwytywania danych zmiana zadanie.Zadania są tworzone podczas pierwszej tabela bazy danych jest włączona dla zmiany przechwytywania danych.Tworzony jest zawsze zadania oczyszczania. Zadanie przechwytywania zostanie utworzone tylko, jeśli nie zdefiniowanych publikacje transakcyjnych dla bazy danych.Po zmianie zarówno przechwytywania danych jest również utworzone zadanie przechwytywania i replikacja transakcyjna są włączone dla bazy danych, i logreader transakcyjnych zadania zostanie usunięty, ponieważ baza danych nie została zdefiniowana publikacje.
Przechwytywanie i oczyszczanie zadania są tworzone przy użyciu domyślnych parametrów.Natychmiast rozpoczęcia zadanie przechwytywania.Działa w sposób ciągły, przetwarzanie maksymalnie 1000 transakcji na cykl skanowania z oczekiwania 5 sekund między cykli.zadanie oczyszczania jest uruchamiane codziennie 2 o godzinieZachowuje wpisy tabela Zmiana 4320 minut lub 3 dni, usuwanie maksymalnie 5000 wpisy pojedynczym instrukcja delete.
Zadania agenta przechwytywania danych zmiany są usuwane podczas przechwytywania danych zmian jest wyłączone dla bazy danych.Zadanie przechwytywania również można usunąć po pierwszej publikacja zostanie dodany do bazy danych i zmienić zarówno przechwytywania danych i replikacja transakcyjna są włączone.
Wewnętrznie, utworzone i usunięte za pomocą procedury przechowywane zadania agenta przechwytywania danych zmiana sys.sp_cdc_add_job i sys.sp_cdc_drop_job, odpowiednio.Te procedury przechowywane są również poddane ekspozycji, tak aby administratorzy mogą kontrolować, tworzenia i usuwania tych zadań.
Administrator nie ma jawnej kontroli nad domyślnej konfiguracja zadania agenta przechwytywania danych zmian.procedura składowana sys.sp_cdc_change_job jest zapewniane w celu umożliwienia domyślne parametry konfiguracja do zmodyfikowania.Ponadto procedura składowana sys.sp_cdc_help_jobs pozwala przeglądać bieżące parametry konfiguracja.Przechwytywanie zadanie i zadanie oczyszczania wyodrębnić parametry konfiguracja z msdb.dbo.cdc_jobs tabela podczas uruchamiania.Wszelkie zmiany tych wartości za pomocą sys.sp_cdc_change_job nie zostały wprowadzone do momentu zatrzymania i ponownego uruchomienia zadanie.
Aby umożliwić zmianę przechwytywania agent zadań danych należy uruchomić i zatrzymać dostępne są dwa dodatkowe procedury przechowywane: sys.sp_cdc_start_job i sys.sp_cdc_stop_job.
Ostrzeżenie
Uruchamianie i zatrzymywanie zadanie przechwytywania nie powoduje utraty danych zmian.Tylko uniemożliwia proces przechwytywania aktywnie skanuje w dzienniku wpisy zmian do złożenia w tabelach zmiany.Jest uzasadnione strategii zapobiegania dziennika skanowania Dodawanie obciążenia zapotrzebowania w okresach zatrzymać zadanie przechwytywania i uruchom go ponownie, gdy zmniejszone zapotrzebowanie.
Obie SQL Server Agent zadania zostały zaprojektowane do być wystarczająco elastyczne i wystarczająco konfigurowane w celu zaspokojenia podstawowych potrzeb zmień dane przechwytywania środowiskach.W obu przypadkach jednak procedury przechowywane udostępniających podstawowe funkcje zostali wystawieni tak, aby dalsze dostosowania jest możliwe.