Podstawowe informacje o Zmień przechwytywanie danych
Wstawianie rekordów przechwytywania danych zmian, aktualizować i usuwać czynności, która jest stosowana do SQL Server Tabela. Spowoduje to udostępnienie szczegółowe informacje o zmianach w formacie łatwo wykorzystane relacyjnej.Informacje o kolumnach i metadane, które jest wymagane, aby zastosować zmiany do środowiska docelowego jest przechwycona dla zmodyfikowanych wierszy i przechowywane w tabelach zmiany, które odzwierciedlają strukturę kolumn śledzone urządzenie źródłowe tabel.Wycenione tabela funkcji są dostarczane do zezwalania na systematyczne dostęp do danych zmian przez konsumenta.
Dobrym przykładem konsumenta danych, który jest określony przez tej technologii jest wyodrębniania, transformacja i ładowania (ETL) aplikacji.Aplikacja ETL przyrostowo ładuje zmiany danych z SQL Server urządzenie źródłowe tabel do magazyn danych lub składnica danych. Mimo że reprezentację tabel źródłowych w obrębie magazyn danych muszą odzwierciedlać zmian w tabelach źródłowych, technologia typu end-to-end odświeża replika urządzenie źródłowe nie jest odpowiedni.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 programu SQL Server.
Zmiana danych Capture przepływ danych
Następująca ilustracja przedstawia przepływ danych głównych dla zmiany przechwytywania danych.
urządzenie źródłowe danych zmian do przechwytywania danych zmiana jest SQL Server Dziennik transakcji. Wstawia, aktualizacje i usuwa są stosowane do śledzenia urządzenie źródłowe tabelach zapisów, które opisują zmiany te są dodawane do dziennika.W dzienniku służy jako dane wejściowe do procesu przechwytywania przechwytywania danych zmian.Odczytuje dziennik i dodaje informacje o zmianach do tabela skojarzone zmiany śledzone tabela.Funkcje dostępne są wyliczyć zmiany, które pojawiają się w tabelach zmian za pośrednictwem określonego zakres zwróceniem informacji w postaci zestaw wyników filtrowane.Zestaw wyników filtrowane zazwyczaj jest używany przez proces aplikacji do aktualizowania reprezentacji urządzenie źródłowe w niektórych zewnętrznych środowiska.
Omówienie przechwytywania danych zmiany i wystąpienie składnika Przechwytywanie zawartości
Zanim można śledzić zmiany w dowolnym poszczególnych tabel w bazie danych, zmiana przechwytywania danych musi być jawnie włączone dla bazy danych.Można to zrobić za pomocą procedura przechowywana sys.sp_cdc_enable_db.Gdy baza danych jest włączona, urządzenie źródłowe tabele mogą być zidentyfikowane jako tabele śledzone za pomocą procedura przechowywana sys.sp_cdc_enable_table.Po włączeniu tabela do przechwytywania danych zmian do obsługi rozpowszechnianie danych zmian w tworzone jest wystąpienie skojarzone przechwytywania urządzenie źródłowe tabela.Wystąpienie przechwytywania składa się z tabela zmiany i do dwóch funkcji kwerendy.Metadane opisujące szczegóły konfiguracja wystąpienie przechwytywania jest zachowywana w tabelach metadanych przechwytywania danych zmian cdc.change_tables, cdc.index_columns, a cdc.captured_columns. Informacje te mogą być pobierane za pomocą procedura przechowywana sys.sp_cdc_help_change_data_capture.
Wszystkie obiekty, które są skojarzone z wystąpienie przechwytywania są tworzone w schemacie przechwytywania danych zmian z włączoną bazę danych.Wymagania dotyczące przechwytywania wystąpienie nazwa jest, że być nazwę prawidłowego obiektu, oraz że być unikatowa w bazie danych przechwytywania wystąpienie s.Domyślnie jest nazwa <Nazwa schematu_Nazwa tabela> z urządzenie źródłowe tabela.Za pomocą dołączania nosi nazwę swojej tabela skojarzone zmiany _CT do przechwytywania wystąpienie nazwy. funkcja, która jest używana do kwerendy dla wszystkich zmian nosi prepending fn_cdc_get_all_changes_ Nazwa instancji przechwytywania. Jeśli wystąpienie przechwytywania jest skonfigurowany do obsługi net changes, net_changes funkcja kwerendy jest również tworzony i o nazwie prepending fn_cdc_get_net_changes_ Nazwa instancji przechwytywania.
Zmienianie tabela
Pierwsze pięć kolumn tabela Zmiana zmiany danych przechwytywania są kolumny metadane.Te zawierają dodatkowe informacje, które są istotne dla zarejestrowanych zmian.Pozostałe kolumny dublowanie zidentyfikowanych przechwyconych kolumny z tabela źródłowej w nazwie i zazwyczaj w polu Typ.Te kolumna zawierają dane przechwycone kolumna, zebrane z urządzenie źródłowe tabela.
Każdy Wstawianie lub usuwanie działania, który jest stosowany do urządzenie źródłowe tabela jest wyświetlany jako jeden wiersz w tabela Zmiana.kolumna danych w wierszu, wyniki z operacją insert nie zawierają wartości kolumna po insert.kolumna danych w wierszu, która następuje w wyniku operacji usunięcia zawierają wartości kolumna przed delete.Operacja 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 działania zmiany.Identyfikuje start_lsn $ __ kolumna zatwierdzanie numer sekwencji (LSN), który został przypisany do zmiany logowania.zatwierdzanie LSN zarówno identyfikuje zmiany, które zostały zatwierdzone w obrębie tej samej transakcji oraz tych transakcji zamówienia.Seqval $ __ kolumna można nakazać więcej zmian, które występują w tej samej transakcji.Operacja $ __ kolumna rejestruje operacji, która jest skojarzona z zmiany: 1 = Usuń 2 = wstawiania, 3 = aktualizacji (przed obrazu) i 4 = aktualizacji (po obrazu). Update_mask $ __ kolumna jest maski bitów zmiennych o jeden bit zdefiniowanych dla każdej kolumna przechwycone.Wstawianie i usuwanie wpisów, maski aktualizacji zawsze będzie miał wszystkie bity zestaw.Aktualizacja wierszy, jednak będzie tylko tych bitów ustawiono odpowiadające zmienione kolumny.
Zmiana danych Capture okres ważności dla bazy danych
Zmiana danych przechwytywania interwału dla bazy danych jest to czas, podczas zmiany, których dane są dostępne dla wystąpień przechwytywania.Okres ważności rozpoczyna się po pierwszym wystąpieniu przechwytywania jest tworzony dla tabela bazy danych i nadal obecne czas.
Dane, które jest złożony w tabelach zmiana będzie rosnąć unmanageably, jeśli użytkownik nie okresowo i systematycznie Oczyść danych.Proces oczyszczania przechwytywania danych zmiana jest odpowiedzialny za egzekwowaniu zasad opartych na zachowanie oczyszczania.Po pierwsze przenosi niskie punktu końcowego interwału spełnia ograniczeń czas.Następnie należy go removrd wygasła wpisy tabela zmian.Domyślnie zachowywana jest trzy dni z danymi.
Na koniec wysokiej jako przechwytywania procesu zatwierdza każdej nowej partia danych zmian, nowe wpisy są dodawane do cdc.lsn_time_mapping dla każdej transakcji, zawierający wpisy tabela zmian. W tabela mapowania zatwierdzanie numer sekwencyjny dziennika (LSN) i transakcji zatwierdzić czas (start_lsn kolumn i tran_end_time, odpowiednio) są zachowywane.Maksymalna wartość LSN, która znajduje się w cdc.lsn_time_mapping reprezentuje znak wody Wysoka ważność okna bazy danych. Jego odpowiedni czas transakcji jest używana jako podstawa, z którego oczyszczania przechowywania oparte oblicza nowego znaku wody niski.
Ponieważ wyciągi procesu przechwytywania zmienione dane z dziennik transakcji, wbudowane w występuje opóźnienie między czasu, w którym zmiana stara się tabela źródłową i czas, zmiana pojawi się w swojej tabela skojarzone zmiany.Ten opóźnienie jest zazwyczaj w małych, jest jednak pamiętać, że zmiana danych nie jest dostępny, dopóki proces przechwytywania przetworzył wpisów dziennika pokrewnych.
Zmiana danych Capture okres ważności w przypadku przechwytywania
Pomimo, że jest wspólne dla interwału bazy danych i interwału przechwytywania pojedynczego wystąpienie zrówna się, to nie zawsze jest wartość true.Interwału wystąpienia przechwytywania uruchamia się, kiedy proces przechwytywania rozpozna wystąpienie przechwytywania i uruchamia ma rejestrować zmiany skojarzonej tabela jego zmiany.W wyniku Jeśli tworzone są wystąpienia przechwytywania w różnym czasie, każdy początkowo ma różne niskie punktu końcowego.kolumna start_lsn zestaw wyników, który jest zwracany przez sys.sp_cdc_help_change_data_capture pokazuje bieżącą niskie punktu końcowego dla każdego wystąpienie określonego przechwytywania.Gdy proces oczyszczania, które utraciły wpisy tabela zmian, dopasowuje wartości start_lsn dla wszystkich wystąpień przechwytywania w celu odzwierciedlenia nowego znaku wody niskim w przypadku zmiany dostępnych danych.Zostaną skorygowane tak, tylko tych wystąpień przechwytywania, które mają start_lsn wartości, które są obecnie mniej niż nowego znaku niskiej wody.W czasie jeśli są tworzone nie nowe wystąpienia przechwytywania, interwałów ważności dla wszystkich wystąpień poszczególnych będą zwykle pokrywa się z bazą danych interwału.
Okres ważności jest ważne dla odbiorców danych zmian, ponieważ interwał wyodrębniania na żądanie muszą być całkowicie objęte bieżącego zmiany danych przechwytywania ważność interwału dla danego wystąpienie przechwytywania.W przypadku niskich punktu końcowego interwał wyodrębniania na lewo od punktu końcowego w niskiej okres ważności może brakować danych zmian z powodu agresywny oczyszczania.W przypadku wysokiego punktu końcowego interwał wyodrębniania po prawej stronie wysokiej punkt końcowy okres ważności, proces przechwytywania nie został jeszcze przetworzony przez okres czas, który jest reprezentowany przez interwał wyodrębniania i zmiana danych może być również brak.
Funkcja sys.fn_cdc_get_min_lsn jest używany do pobierania bieżącego minimalnego LSN do przechwytywania wystąpienie, podczas gdy sys.fn_cdc_get_max_lsn można pobrać obecną wartość maksymalną LSN.Podczas badania w przypadku zmiany danych, jeśli określony zakres LSN nie mieścić się w tych dwóch wartości LSN, zmiana danych przechwytywania kwerendy działa nie powiedzie się.
Obsługa zmian w tabelach urządzenie źródłowe
Aby uwzględnić zmiany kolumna urządzenie źródłowe tabel, które są śledzone jest trudne emisji dla klientów niższego rzędu.Chociaż włączenie zmienić przechwytywania danych na urządzenie źródłowe tabela nie zapobiega takie zmiany kodu DDL występujących, zmiana danych przechwytywania pomaga zmniejszyć wpływ na konsumentów poprzez umożliwienie zbiory dostarczone, zostaną zwrócone za pośrednictwem interfejsu API pozostaje bez zmian nawet jako podstawową strukturę kolumn urządzenie źródłowe tabela zmiany.Ta struktura stałej kolumna jest również odzwierciedlany w tabela podstawowej, zmiana czy zdefiniowanej kwerendy działa dostępu.
Aby uwzględnić tabela zmiany struktury stałej kolumna, proces przechwytywania odpowiedzialnego za wypełnianie tabela Zmiana będzie ignorował dowolne nowe kolumna, które nie są określone dla przechwytywania podczas urządzenie źródłowe tabela został włączony do przechwytywania danych zmian.Śledzone kolumna zostanie usunięte, będą stosowane wartości null dla kolumna wpisy kolejnych zmian.Jednak jeśli istniejącej kolumna ulega zmianie jego typu danych, zmiany są propagowane do tabela zmian upewnij się, że mechanizm przechwytywania nie wprowadza utraty danych do kolumn śledzone.Proces przechwytywania jednocześnie księgowanie Wykryto zmiany struktury kolumna tabel rejestrowane w tabela cdc.ddl_history.Konsumenci chcą otrzymywać korekt, które mogą zawierać w kierunku z prądem aplikacji za pomocą procedura przechowywana sys.sp_cdc_get_ddl_history.
Zazwyczaj w bieżącym wystąpieniu przechwytywania będą nadal zachowuje jego kształt DDL zmiany zostaną zastosowane do jego skojarzony urządzenie źródłowe tabela.Jednak jest możliwe utworzenie drugiego wystąpienie przechwytywania do tabela, która odzwierciedla strukturę nowej kolumna.Dzięki temu proces przechwytywania wprowadzić zmiany do tej samej urządzenie źródłowe tabela na dwie tabele różne zmiany o dwóch struktur innej kolumna.W ten sposób w czasie, gdy jedna tabela zmiany mogą w dalszym ciągu podawania bieżącego działania programów, drugi może dysk środowiska programowania, który chce się dołączyć nowe dane kolumna.Zezwalanie mechanizm przechwytywania, aby wypełnić obie tabele zmiany w tandemowe oznacza, że przejście od jednego do drugiego mogą być realizowane bez utraty danych zmian.Jest to możliwe, zawsze obie zmiany danych przechwytywania osiami czas zachodzenia.Kiedy dokonywana jest przejście, wystąpienie przestarzałe przechwytywania mogą być usunięte.
Uwaga
Maksymalna liczba wystąpień przechwytywania, które mogą być jednocześnie skojarzone z tabelą pojedyncze urządzenie źródłowe jest 2.
Relacja między zadanie przechwytywania i Logreader transakcyjne replikacja
Logika dla 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 transakcyjnej do zbioru zmiany dokonane dziennik transakcji.Samodzielnie przechwytywania danych zmian jest włączone dla bazy danych, można utworzyć zadanie przechwytywania agenta programu SQL Server jako pojazdu do wywoływania sp_replcmds przechwytywanie danych zmian.Jeśli obecna jest replikacja, logreader transakcyjnych, samodzielnie jest używana do zaspokojenia potrzeb zmiany danych w obu tych odbiorców.Ta strategia znacznie zmniejsza rywalizacji dziennika podczas przechwytywania danych zmiany i replikacja są włączone dla tej samej bazy danych.
Przełączanie między te dwa tryby działania do przechwytywania danych zostanie automatycznie za każdym razem, gdy następuje zmiana stanu replikacja przechwytywania danych zmiana zmiany włączone bazy danych.
Important Note: |
---|
Oba wystąpienia logiki przechwytywania wymagają SQL Server Agent działały w procesie wykonywania. |
Podstawowe zadania zmiany procesu przechwytywania przechwytywania danych jest w dzienniku skanowania i zapisywać dane kolumna oraz transakcji powiązanych informacji do tabel, zmiana przechwytywania danych zmian.W celu zapewnienia granicę transakcyjnie spójne we wszystkich zmian danych przechwytywania zmianę tabel, które go wypełnia, proces przechwytywania otwiera i zapisuje własnej transakcji w każdym cyklu skanowania.Sytuacje, w których tabelach nowo są włączone do przechwytywania danych zmiany i automatycznie umieszcza je zestaw tabel, które aktywnie są monitorowane przez zmianę wpisów w dzienniku.Podobnie wyłączenie przechwytywania danych zmiana zostanie również wykryty, powodując tabela źródłowej ma zostać usunięty z zestaw tabel aktywnie monitorowana pod kątem zmian danych.Po zakończeniu przetwarzania sekcji w dzienniku proces przechwytywania sygnały logiki obcinania dziennika serwera, która używa tych informacji do identyfikacji kwalifikują się do obcinania wpisy dziennika.
Uwaga
Jeśli bazy danych jest włączony do przechwytywania danych zmian, nawet wtedy, gdy tryb odzyskiwanie jest ustawiony na proste odzyskiwanie punkt obcinania dziennika nie zostanie wcześniejsze, aż wszystkie zmiany, które są oznaczone do przechwytywania mają zostać zgromadzone przez proces przechwytywania.Jeśli proces przechwytywania nie jest uruchomiona i zmian można zbierać, wykonywanie punkt kontrolny nie obcinają dziennika.
Proces przechwytywania jest również przechowywać historię zmian DDL śledzone tabel.Instrukcje DDL, które są skojarzone z przechwytywania danych zmiana wprowadzać dane do dziennik transakcji bazy danych za każdym razem, gdy zmiana danych obsługujące przechwytywanie bazę danych lub tabela zostanie usunięte lub kolumn tabela włączone przechwytywania zmiany danych są dodawane, zmodyfikowane lub usunięte.Te wpisy dziennika są przetwarzane przez proces przechwytywania, który następnie księguje skojarzone zdarzenia DDL do tabela cdc.ddl_history.Można uzyskać informacji o zdarzeniach DDL, które mają wpływ na tabelach śledzone za pomocą procedura przechowywana sys.sp_cdc_get_ddl_history.
Zmiana danych przechwytywania Agent zadania
Dwa SQL Server Zadania agenta są zwykle skojarzone z bazy danych zmiany danych przechwytywania włączone: taką, która jest używana do wypełniania tabel bazy danych zmiany i taką, która jest odpowiedzialna za zmienić czyszczenia tabela. Oba zadania składają się z jednym kroku, który uruchamia Transact-SQL polecenie. The Transact-SQL command that is invoked is a change data capture defined procedura przechowywana that implements the logic of the zadanie. Zadania są tworzone podczas pierwszej tabela bazy danych jest włączony do przechwytywania danych zmian.Zawsze powstaje zadanie oczyszczania.Zadanie przechwytywania zostanie utworzone tylko w przypadku nie zdefiniowane transakcyjnych publikacje w bazie danych.Zadanie przechwytywania jest także utworzony, jeśli obie zmiany przechwytywania danych replikacja transakcyjnej są włączone dla bazy danych i zadania logreader transakcyjne jest usuwany, ponieważ baza danych nie została zdefiniowana publikacji.
Przechwytywanie i Oczyszczanie zleceń są tworzone przy użyciu domyślnych parametrów.Zadanie przechwytywania jest uruchamiany natychmiast.Działa w sposób ciągły, maksymalnie 1000 transakcji cykl skanowania z oczekiwania 5 sekund cykle przetwarzania.Zadanie oczyszczania jest uruchamiane codziennie 2 o godzinieZachowuje wpisy w tabela Zmiana 4320 minut lub 3 dni, usuwanie maksymalnie 5 000 wpisów jednym usuń instrukcję.
Zmiany zadań agent przechwytywania danych są usuwane podczas przechwytywania danych zmian jest wyłączone dla bazy danych.Zadanie przechwytywania mogą być usunięte także podczas pierwszej publikacja zostanie dodany do bazy danych i pobierania danych zmiany i replikacja transakcyjnej są włączone.
Zmienianie, agenta przechwytywania danych zadania są tworzone i usunięte za pomocą procedur przechowywanych sys.sp_cdc_add_job and sys.sp_cdc_drop_job, odpowiednio.Również są narażone tych procedur przechowywanych, dzięki czemu administrator może kontrolować, tworzenie i usuwanie tych zadań.
Administrator nie ma jawnych kontroli nad domyślnej konfiguracja zmiany zadań agent przechwytywania danych.Procedura przechowywana sys.sp_cdc_change_job zapewnia Zezwalaj na domyślne parametry konfiguracja do zmodyfikowania.Ponadto, w procedurze przechowywanej sys.sp_cdc_help_jobs umożliwia aktualne parametry konfiguracja do przeglądania.Zadanie przechwytywania i zadania oczyszczania wyodrębniania msdb.dbo.cdc_jobs tabela podczas uruchamiania parametry konfiguracja.Zmiany wprowadzone do tych wartości za pomocą sys.sp_cdc_change_job nie zostaną wprowadzone do momentu zatrzymania i ponownego uruchomienia zadanie.
Aby zezwolić na zmianę zadań agenta przechwytywania danych mają być rozpoczęte i zatrzymane dostępne są dwa dodatkowe procedury przechowywane: sys.sp_cdc_start_job and sys.sp_cdc_stop_job.
Uwaga
Uruchamianie i zatrzymywanie zadanie przechwytywania nie powoduje utraty danych zmian.To tylko uniemożliwia proces przechwytywania aktywnie skanowania w dzienniku wpisy zmian do złożenia w tabelach zmiany.Rozsądne strategii zapobiegania dziennika skanowania Dodawanie okresach zapotrzebowania szczytowego obciążenia jest zatrzymać zadanie przechwytywania i uruchom go ponownie, jeśli żądanie jest ograniczona.
Oba SQL Server Agent zadania zostały zaprojektowane do być tyle elastyczne i wystarczająco konfigurowane w celu spełnienia podstawowego wymaga zmiany danych przechwytywać środowiskach. W obu przypadkach jednak podstawowej procedury przechowywane, udostępniających podstawowe funkcje mają już narażony tak, aby dodatkowo możliwe jest dostosowanie.