Składniki przepływu CDC
Dotyczy:SQL Server SSIS Integration Runtime w usłudze Azure Data Factory
Ważny
Składniki przepływu CDC, w tym zadanie sterowania CDC, źródło CDC i splitter CDC, są przestarzałe. Aby uzyskać szczegółowe informacje, zapoznaj się z anonsem.
Składniki przechwytywania zmian danych firmy Attunity dla usług Microsoft SQL Server 2019 Integration Services (SSIS) ułatwiają deweloperom usług SSIS pracę z usługą CDC i zmniejszanie złożoności pakietów CDC.
Składniki cdC usług SSIS są przeznaczone do pracy z funkcją CDC programu SQL Server, w której tabele źródłowe są tą samą bazą danych programu SQL Server lub bazą danych Oracle (w przypadku korzystania z usługi Oracle CDC Service dla programu SQL Server). Obsługiwane są tabele partycjonowane.
Składniki obejmują składniki sterowania i przepływu danych, które usprawniają proces odczytywania i przetwarzania danych zmian w pakietach usług SSIS. Składniki można dodać do biblioteki składników w programie Microsoft SQL Server, ale są instalowane oddzielnie.
Poniżej przedstawiono składniki przechwytywania zmian danych według attunity:
komponent zarządzania przepływem CDC:
Komponenty przepływu danych CDC:
Instalacja
W tej sekcji opisano procedury instalacji składników CDC dla usług Microsoft SQL Server 2019 Integration Services (SSIS).
Składniki CDC dla usług SSIS są pakowane za pomocą projektanta i usługi Microsoft Change Data Capture Designer for Oracle firmy Attunity dla programu SQL Server. Ten plik jest częścią pakietu funkcji programu SQL Server. Pobierz składniki pakietu Feature Pack ze strony internetowej SQL Server 2016 Feature Pack.
Obsługa wersji
Obsługa wersji programu SQL Server
Składniki CDC dla SSIS są obsługiwane we wszystkich wersjach programu Microsoft SQL Server objętych wsparciem. Obecnie obsługiwane wersje programu SQL Server obejmują program SQL Server 2012 do programu SQL Server 2017.
Obsługa wersji systemu operacyjnego
Składniki usługi CDC dla usług SSIS są obsługiwane w następujących systemach operacyjnych i platformach:
- Windows 8 i 8.1
- Windows 10
- Windows Server 2012 i 2012 R2
- Windows Server 2016
Uruchamianie programu instalacyjnego
Przed uruchomieniem kreatora instalacji upewnij się, że narzędzia SQL Server Sql Server Data Tools są zamknięte. Następnie postępuj zgodnie z instrukcjami kreatora instalacji.
Ponowne uruchamianie usługi SSIS
Po zainstalowaniu składników usługi CDC należy ponownie uruchomić usługę SSIS, aby upewnić się, że składniki działają prawidłowo podczas tworzenia pakietów w narzędziach SQL SQL Server Data Tools.
Po zainstalowaniu składników zostanie wyświetlony komunikat. Po wyświetleniu monitu kliknij Tak.
Odinstalowywanie składników usługi Microsoft CDC
Należy odinstalować źródło CDC, rozdzielacz CDC lub zadanie kontroli CDC za pomocą kreatora dezinstalacji. Jeśli używasz narzędzi SQL Server SQL Server Data Tools do tworzenia pakietów, przed uruchomieniem kreatora dezinstalacji upewnij się, że narzędzia SQL Server Data Tools są zamknięte.
Korzyści
Składniki CDC dla składników usług SQL Server Integration Services umożliwiają deweloperom usług SSIS łatwe tworzenie pakietów usług SSIS, które przetwarzają zmiany danych. Te składniki zwiększają możliwości deweloperów usług SSIS do obsługi usługi CDC i zmniejszają złożoność pakietów CDC.
Składniki CDC w SSIS służą do dostarczania danych o zmianach w sposób umożliwiający łatwe przetwarzanie ich na potrzeby replikacji, ładowania hurtowni danych, aktualizacji powoli zmieniających się wymiarów w OLAP, audytowania zmian lub innych potencjalnych zastosowań. Typ dalszego przetwarzania jest określany przez dewelopera usług SSIS.
Składniki CDC SSIS są zaprojektowane do współpracy z funkcją CDC serwera SQL Server z tabelami zmian znajdującymi się w tej samej bazie danych serwera SQL Server.
Wprowadzenie do komponentów przechwytywania zmian w danych
Typowy pakiet CDC przetwarza zmiany w grupie tabel. Podstawowa część przepływu sterowania tego typu pakietu CDC jest pokazana na poniższym rysunku. Ten pakiet jest nazywany pakietem przetwarzania kroplowego.
Przepływ kontroli pakietu przetwarzania strumieniowego
Ten przepływ sterowania w usługach SQL Server Integration Services zawiera dwa zadania sterowania CDC i zadanie przepływu danych. Pierwsze zadanie o nazwie Pobierz zakres przetwarzania CDC ustanawia zakres LSN dla zmian przetwarzanych w zadaniu przepływu danych o nazwie Process Changes. Ten zakres jest ustanawiany na podstawie tego, co zostało przetworzone podczas ostatniego uruchomienia pakietu i zostało zapisane w magazynie trwałym.
Aby uzyskać więcej informacji na temat korzystania z zadania sterowania CDC, zobacz CDC Control Task i CDC Control Task Editor.
Na poniższej ilustracji przedstawiono przepływ danych Process Changes, który koncepcyjnie pokazuje, jak zmiany są procesami.
Kroki przedstawione na tym rysunku to:
Zmiany w tabeli X to źródło CDC, które odczytuje zmiany dokonane w tabeli X w zakresie przetwarzania CDC określonym w nadrzędnym przepływie sterowania.
CDC Splitter jest używany do dzielenia zmian na wstawki, usunięcia i aktualizacje. W tym scenariuszu zakłada się, że źródło CDC jest skonfigurowane do generowania zmian sieci, aby różne typy zmian mogły być przetwarzane równolegle.
Określone zmiany są następnie dalej przetwarzane podrzędnie. Na tej ilustracji zmiany są wstawiane do tabel przy użyciu wielu miejsc docelowych ODBC, ale w rzeczywistych przypadkach przetwarzanie może być inne.
Aby uzyskać więcej informacji o źródle CDC, zobacz:
Edytor źródła CDC (Strona Menedżera połączeń)
Edytor źródła CDC (strona kolumn)
Edytor źródła CDC (strona wyjściowa błędów)
Aby uzyskać więcej informacji o CDC Splitterze, zobacz:
Jednym z podstawowych problemów, które wymagają uwagi podczas tworzenia pakietów CDC, jest sposób interakcji przetwarzania zmian z początkowym ładowaniem (lub początkowym przetwarzaniem) danych.
Składniki CDC obsługują trzy odrębne scenariusze początkowego ładowania i przetwarzania zmian:
Początkowe ładowanie odbywa się za pomocą migawki bazy danych. W tym przypadku przetwarzanie zmian rozpoczyna się od LSN zdarzenia migawki.
Początkowe ładowanie z nieaktywnej bazy danych. W tym przypadku podczas początkowego ładowania nie są wprowadzane żadne zmiany, więc bieżący LSN jest próbkowany w pewnym momencie podczas początkowego ładowania, a przetwarzanie zmian rozpoczyna się od tego LSN.
Początkowe ładowanie z aktywnej bazy danych. W takim przypadku, ponieważ początkowe ładowanie jest w toku, wprowadzane są zmiany do bazy danych i nie ma pojedynczej wartości LSN, od której można by precyzyjnie rozpocząć przetwarzanie zmian. W takim przypadku deweloper pakietu początkowego ładowania może pobrać bieżący LSN źródłowej bazy danych przed i po początkowym ładowaniu. Następnie, podczas przetwarzania zmian, należy zachować ostrożność w przypadku zmian wprowadzanych jednocześnie z początkowym ładowaniem, ponieważ niektóre przetworzone zmiany są już widoczne w początkowym ładowaniu (na przykład zmiana poprzez wstawienie może zakończyć się niepowodzeniem z powodu błędu zduplikowanego klucza, gdyż wstawiony wiersz został odczytany przez początkowy proces ładowania).
Na poniższej ilustracji przedstawiono pakiet usług SSIS, który może obsługiwać dwa pierwsze scenariusze:
Na poniższej ilustracji przedstawiono pakiet usług SSIS, który może obsługiwać trzeci scenariusz:
Po załadowaniu pakietu początkowego, pakiet aktualizacji stopniowych jest uruchamiany wielokrotnie zgodnie z harmonogramem w celu przetwarzania zmian, gdy tylko staną się dostępne do użycia.
Przekazanie stanu przetwarzania CDC z pakietu początkowego ładowania danych do pakietu kroplowego ładowania oraz między różnymi zadaniami w każdym pakiecie odbywa się za pomocą specjalnej zmiennej tekstowej pakietu SSIS. Wartość tej zmiennej jest określana jako stan CDC, który odzwierciedla bieżący stan przetwarzania CDC dla grup tabel obsługiwanych przez pakiety początkowego ładowania i pakiety zasilania małymi porcjami danych.
Wartość zmiennej stanu CDC musi być przechowywana w magazynie trwałym. Należy odczytać przed rozpoczęciem przetwarzania CDC i zapisać z aktualnym stanem po zakończeniu przetwarzania. Zadanie ładowania i przechowywania stanu CDC może być obsługiwane przez dewelopera usług SSIS, ale składnik kontroli cdC może zautomatyzować to zadanie, utrzymując wartość stanu CDC w tabeli bazy danych.
Zagadnienia dotyczące zabezpieczeń
W tej sekcji wymieniono niektóre zagadnienia dotyczące zabezpieczeń związane z używaniem składników CDC w usłudze SSIS.
Autoryzacja dostępu do zmiany danych
Pakiety aktualizacji trickle-feed wymagają dostępu do funkcji CDC programu SQL Server. Taki dostęp jest domyślnie udzielany członkom stałej roli bazy danych db_owner. Ponieważ db_owner jest potężną rolą, podczas definiowania instancji przechwytywania w SQL Server zaleca się skojarzenie roli bezpieczeństwa typu gating z każdą instancją przechwytywania, dzięki której pakiet SSIS CDC może używać znacznie bardziej ograniczonego użytkownika do przetwarzania zmian.
Dostęp do bazy danych CDC, bieżący LSN
Operacje zadania kontroli CDC do oznaczania początkowego LSN na potrzeby przetwarzania zmian muszą być w stanie znaleźć bieżące LSN bazy danych CDC. Składniki znajdują nazwę LSN przy użyciu procedury sp_replincrementlsn z bazy danych master. Uprawnienia do wykonania tej procedury muszą być przyznane na login używany do łączenia się z bazą danych CDC serwera SQL Server.
Dostęp do tabeli stanów CDC
Tabela stanów CDC jest używana do automatycznego utrwalania stanów CDC, które muszą być możliwe do aktualizacji przez login używany do łączenia się z bazą danych CDC SQL Server. Ponieważ ta tabela jest tworzona przez dewelopera usług SSIS, ustaw administratora systemu programu SQL Server jako użytkownika autoryzowanego do tworzenia baz danych programu SQL Server i wykonywania zadań administracyjnych i konserwacji. Ponadto administrator systemu programu SQL Server, który współpracuje z bazami danych z włączoną usługą CDC, musi mieć wiedzę na temat technologii i implementacji usługi SQL Server CDC.
Grupowanie tabel na potrzeby przetwarzania CDC
Projekty bazy danych mogą mieć rozmiar od kilku tabel do wielu tysięcy tabel. Podczas projektowania pakietów inicjalnego ładowania i przechwytywania zmian w danych (CDC) warto grupować tabele w znacznie mniejszych grupach, aby ułatwić zarządzanie i zwiększyć wydajność. W tej sekcji wymieniono różne zagadnienia, które mają wpływ na sortowanie tabel w małych grupach, gdzie tabele w każdym z nich są początkowo ładowane, a następnie aktualizowane jako grupa.
Wzorce CDC obsługiwane przez składniki CDC przyjmują, że to grupowanie jest już określone. Każda grupa definiuje oddzielny kontekst CDC, który jest utrzymywany oddzielnie od innych grup. Dla każdej grupy tworzone są pakiety aktualizacji typu initial-load i trickle-feed. Aktualizacje oparte na stopniowym dostarczaniu danych są planowane dla okresowych uruchomień w zależności od ograniczeń przetwarzania zmian (na przykład zużycia CPU i I/O, wpływu na inne systemy) i oczekiwanego poziomu opóźnienia.
Tabele są grupowane na podstawie następujących zagadnień:
Zgodnie z docelową bazą danych. Wszystkie tabele zapisywane w różnych docelowych bazach danych lub poddawane różnym przetwarzaniu powinny być przypisane do różnych grup CDC.
Tabele powiązane z ograniczeniami integralności referencyjnej powinny być przypisane do tej samej grupy, aby uniknąć problemów z integralnością referencyjną w lokalizacji docelowej.
Tabele, dla których można tolerować większe opóźnienia, można grupować, aby można je było przetwarzać rzadziej i zmniejszyć ogólne obciążenie systemu.
Tabele, dla których występuje wyższa częstotliwość zmian, powinny znajdować się w mniejszych grupach, a tabele o niskim współczynniku zmian można grupować w większych grupach.
Dla każdej grupy CDC są tworzone następujące dwa pakiety:
Pakiet ładowania początkowego, który odczytuje cały zakres danych z tabel źródłowych i stosuje go do tabel docelowych.
Pakiet aktualizacji sukcesywnych, który odczytuje zmiany wprowadzone w tabelach źródłowych i stosuje je w tabelach docelowych. Ten pakiet powinien być wykonywany regularnie.
Stan CDC
Każda grupa CDC ma skojarzony stan, który jest reprezentowany przez ciąg o określonym formacie. Aby uzyskać więcej informacji, zobacz zadanie sterowania CDC . W poniższej tabeli przedstawiono możliwe wartości stanu CDC.
Stan | Opis |
---|---|
0-(POCZĄTKOWY) | Stan, który istnieje przed uruchomieniem jakichkolwiek pakietów w bieżącej grupie CDC. Jest to również stan, gdy stan CDC jest pusty. Aby uzyskać więcej informacji na temat operacji zadań kontroli cdC, zobacz CDC Control Task. |
1-ILSTART (początkowe-Load-Started) | Jest to stan, który istnieje po uruchomieniu początkowego pakietu ładowania. Dzieje się tak po wywołaniu operacji MarkInitialLoadStart dla zadania kontrolnego CDC. Aby uzyskać więcej informacji na temat operacji zadań CDC Control, zobacz CDC Control Task. |
2 — ILEND (początkowy —Load-Ended) | Jest to stan, który istnieje po pomyślnym zakończeniu początkowego pakietu ładowania. Dzieje się tak po wywołaniu operacji MarkInitialLoadEnd do zadania sterującego CDC. Aby uzyskać więcej informacji na temat operacji zadania kontrolnego CDC, zobacz CDC Control Task. |
3-ILUPDATE (początkowa aktualizacja obciążenia) | Jest to stan, który występuje po pierwszym uruchomieniu pakietu aktualizacji po początkowym załadowaniu, podczas gdy nadal przetwarzany jest początkowy zakres przetwarzania. Dzieje się to po wywołaniu operacji GetProcessingRange w zadaniu sterowania CDC. Jeśli używasz kolumny _$reprocessing, ustawia się wartość 1, aby wskazać, że pakiet może już przetwarzać ponownie wiersze na miejscu docelowym. Aby uzyskać więcej informacji na temat operacji zadania kontroli CDC, zobacz CDC Control Task. |
4-TFEND (Trickle-Feed-Update-Ended) | Jest to stan oczekiwany dla zwykłych przebiegów usługi CDC. Oznacza to, że poprzedni przebieg zakończył się pomyślnie i można uruchomić nowy przebieg z nowym zakresem przetwarzania. |
5-TFSTART (Trickle-Feed-Update-Started) | To jest stan, który ma miejsce przy kolejnych uruchomieniach pakietu aktualizacji po wywołaniu operacji GetProcessingRange do zadań sterowania CDC. Oznacza to, że uruchomiono regularną usługę CDC, ale nie została jeszcze zakończona, lub nie zakończyła się jeszcze w sposób prawidłowy (MarkProcessedRange). Aby uzyskać więcej informacji na temat operacji zadań kontroli CDC, zobacz CDC Control Task. |
6-TFREDO (Ponowne przetwarzanie-Kroplówka-Feed-Updates) | Jest to stan w GetProcessingRange, który występuje po uruchomieniu TFSTART. Oznacza to, że poprzednie uruchomienie nie zostało ukończone pomyślnie. Jeśli używasz kolumny __$reprocessing, ustawiono ją na 1, aby wskazać, że pakiet może przetwarzać wiersze już w miejscu docelowym. |
Błąd 7 | Grupa CDC jest w stanie błędu. |
Oto diagram stanu składników CDC. Stan ERROR jest osiągany po osiągnięciu stanu, który nie jest oczekiwany. Oczekiwane stany przedstawiono na poniższym diagramie. Jednak diagram nie pokazuje stanu BŁĘDU.
Na przykład na końcu początkowego pakietu ładowania, podczas próby ustawienia stanu na ILEND, jeśli stan to TFSTART, grupa CDC jest w stanie błędu, a pakiet aktualizacji Trickle-Feed nie zostanie uruchomiony (pakiet początkowego ładowania działa).
diagram stanu
Po pomyślnym uruchomieniu pakietu Wstępnego Ładowania, Pakiet Aktualizacji Trickle-Feed jest uruchamiany wielokrotnie zgodnie z ustalonym harmonogramem, aby przetworzyć zmiany w tabelach źródłowych. Każde uruchomienie pakietu Trickle-Feed Update jest uruchomieniem usługi CDC.
W tej sekcji
Powiązane zadania
Powiązana zawartość
Artykuł techniczny, Instalowanie usługi Change Data Capture programu Microsoft SQL Server 2012 dla Oracle firmy Attunity, na social.technet.microsoft.com.
Artykuł techniczny Rozwiązywanie problemów z konfiguracją w funkcji Microsoft Change Data Capture dla Oracle od Attunityna stronie social.technet.microsoft.com.
Artykuł techniczny rozwiązywanie problemów z błędami wystąpienia CDC w funkcjonalności przechwytywania zmian danych Microsoftu dla Oracle przez Attunityna social.technet.microsoft.com.
Wideo, CDC for Oracle Databases using SQL Server Integration Services 2012 (SQL Server Video), w technet.microsoft.com.