SlideShare una empresa de Scribd logo
1 de 30
NASI SPONSORZY I PARTNERZY
Szpiedzy z krainy bazy danych,
czyli Change Tracking &
Change Data Capture w służbie SQL Server
Kamil Nowiński
PRELEGENT
• Programista od 12-tego roku życia
• Ponad 10-letnie doświadczenie (DEV/DBA)
• Technologie Microsoft:
– Programowanie: VB6, VB.NET, C#, .NET Framework
– Bazy danych: Microsoft SQL 2000 – 2012
Administracja & Programowanie (T-SQL)
• Pasjonat baz danych
• Członek PLSSUG, prelegent wrocławskich spotkań
• Certyfikaty: MCITP, MCP, MCTS, MCSA SQL Server
• Zainteresowania zawodowe:
– Optymalizacja baz danych, Hurtownie danych, SSIS
SQLDay 2014
Kamil
Nowiński
AGENDA
• Cel do osiągnięcia
• Ogólna koncepcja CHANGE TRACKING
• Korzyści, Sposób uruchomienia, Ustawienia i uprawnienia
• Funkcje zmian + DEMO
• Ogólna koncepcja CHANGE DATA CAPTURE
• Przebieg CDC, stan CDC
• Komponenty SSIS + DEMO
• Zalety i wady
• Podsumowanie i dyskusja
SQLDay 2014
Siedź, Śledź, … - Audytuj
• Cel:
– Wskazanie wierszy, które uległy zmianie/usunięciu od czasu…
• Jak to było wcześniej…
– DML Triggers – bardzo kosztowne operacje (wzrost czasu wykonania)
– Dodatkowe tabele – przechowywanie info o zmianach
– Konieczność czyszczenia dodatkowych tabel
• Wady:
– Czasochłonne (kosztowne) tworzenie wyzwalaczy i tabel dodatkowych
– Spadek wydajności
– Złożone procesy
SQLDay 2014
Change Tracking - koncepcja
• Śledzimy zmiany DML (ang. Data Manipulation Language):
INSERT, UPDATE, DELETE
• Poszczególne wiersze wybranej tabeli
• Interesuje nas tylko ostatnia zmiana
– Nie: ile razy wiersz został zmodyfikowany
– Nie: jakie wartości (historyczne)
były przed zmianami
• Zapis synchroniczny
(w transakcji operacyjnej)
• Zapis tylko wartości PK
(Primary Key)
SQLDay 2014
Change Tracking - wprowadzenie
• Funkcjonalność wprowadzona w SQL Server 2008
• Poziom kompatybilności >= 90
• Uprawniania:
– SELECT (min. do PK tabeli źródłowej)
– VIEWCHANGETRACKING
• Każda tabela = jedna tablica zmian
• Przechowywanie wartości klucza głównego
• Zmiany dostępne przez tzw. funkcje zmian
SQLDay 2014
Change Tracking - uruchamianie
• Uruchomienie mechanizmu:
– Włączenie dla bazy danych
– Ustawienie parametrów
– Włączenie dla wybranej tabeli/tabel
• Narzędzia:
– SSMS
– T-SQL (ALTER DATABASE, ALTER TABLE)
SQLDay 2014
Change Tracking – funkcje zmian
• CHANGETABLE()
–CHANGES – lista zmian od czasu X
–VERSION – informacja o wskazanym wierszu
• CHANGE_TRACKING_CURRENT_VERSION()
• CHANGE_TRACKING_MIN_VALID_VERSION(table)
• CHANGE_TRACKING_IS_COLUMN_IN_MASK()
• WITH CHANGE_TRACKING_CONTEXT()
DEMO
CHANGE TRACKING
SQLDay 2014
Change Tracking
• Zalety:
– Synchroniczny zapis do tabeli zmian,
– Brak konieczności tworzenia własnych wyzwalaczy i dodatkowych tabel,
– Minimalne obciążenie dla silnika bazy danych,
– Prostota działania,
– Minimalna zajętość przestrzeni dyskowej,
– Wbudowane funkcje pobierania zmian w zapytaniach,
– Auto CleanUp,
– Dostępny już od edycji Express (darmowa).
• Wady:
– Synchroniczny zapis do tabeli zmian,
– Informacja tylko o ostatniej zmianie encji (zmiany netto),
– Brak komponentów SSIS (wada?).
SQLDay 2014
Change Data Capture
• Koncepcja:
– Śledzimy Przechwytujemy zmiany DML
(ang. Data Manipulation Language):
INSERT, UPDATE, DELETE
– Poszczególne wiersze wybranej tabeli
– Interesuje nas każda zmiana
• Tak: ile razy wiersz został zmodyfikowany
• Tak: jakie wartości (historyczne)
były przed zmianami
SQLDay 2014
Change Data Capture
• Transaction Log
• SQL Agent
• Instancja przechwytywania
• max. dwie na tabelę źródłową
• Asynchroniczny zapis:
• co 5 sekund
• max. 10x500 operacji
• Stan CDC
• Zapis LSN (Log Sequence Number)
SQLDay 2014
DEMO
CHANGE DATA CAPTURE
Change Data Capture
SQLDay 2014
Wstępne ładowanie danych
Synchronizowanie zmian przy użyciu CDC
Typy zmian w tabeli źródłowej:
- INSERT
- UPDATE
- DELETE
[Pakiet SSIS] +
odczyt zmiany z
tabeli _CT +
wyrażenie
MERGE
Pakiet SSIS:
Nowe
komponenty
SQL Server 2012
Przebieg CDC (ang. CDC Run) – dwa pakiety SSIS
Change Data Capture – Stan CDC
Stan CDC – łańcuch znakowy w formacie:
<state-name>/CD/<cs-lsn>/[CE/<ce-lsn>/][IR/<ir-start>/<ir-
end>/]TS/<timestamp>/ER/<short-error-text>
Przykład:
TFEND/CS/0x000000EA00001F700002/TS/2014-04-15T06:23:44.3314094/
SQLDay 2014
Change Data Capture – Łańcuch stanu CDC
SQLDay 2014
Segment Opis
<state-name> Nazwa bieżącego stanu CDC
(np. ILSTART, ILEND, ILUPDATE, TFEND, TFSTART, TFREDO, ERROR)
CS Current Start - Aktualny punkt początkowy przetwarzania
<cs-lsn> Ostatni LSN przetworzony w poprzednim przebiegu CDC
CE Current End – Bieżący punkt końcowy przetwarzania
<ce-lsn> Ostatni LSN, który ma być przetworzony w bieżącym przebiegu CDC
IR Początkowy zakres przetwarzania
<ir-start> LSN zmiany bezpośrednio przed rozpoczęciem wstępnego ładowania
<ir-end> LSN zmiany bezpośrednio po zakończeniu wstępnego ładowania
TS Sygnatura czasowa ostatniej aktualizacji CDC
<timestamp> Dziesiętna reprezentacja 64-bitowej właściwości System.DateTime.UtcNow
ER Łańcuch stanu, jeśli ostatnia operacja CDC zakończyła się niepowodzeniem
<short-error-text> Zawiera krótki opis błędu jeśli takowy wystąpił
Change Data Capture – Typy stanów CDC
SQLDay 2014
Stan Opis
0 – (INITIAL) Stan początkowy przed uruchomieniem jakiegokolwiek pakietu w bieżącej grupie CDC.
ILSTART
Initial Load Started
Stan występuje podczas wstępnego ładowania danych.
ILEND
Initial Load Ended
Stan występuje po udanym zakończeniu wstępnego ładowania.
ILUPDATE
Initial Load Update
Stan występuje przy przetwarzaniu wstępnego zakresu zmian CDC.
(pierwszy przebieg po wstępnym ładowaniu danych)
TFEND
(CDC change processing
Update Ended)
Stan kontekstu CDC, gdy poprzedni przebieg CDC zakończył się powodzeniem.
Gotowość do przetwarzania kolejnego zakresu zmian.
TFSTART
(CDC change processing
Ended)
Stan kontekstu CDC gdy zakończyło się przetwarzanie wstępnego zakresu zmian.
Oznacza to albo zwykły przebieg CDC, który jeszcze się nie zakończył,
albo przebieg CDC zakończony błędem.
TFREDO (Reprocessing
Trickle-Feed Updates)
Stan jest używany, gdy poprzedni przebieg nie został czysto zakończony i jest właśnie
powtarzany.
ERROR Grupa CDC znajduje się w stanie błędu.
Change Data Capture
Kiedy można nie przechowywać stanu CDC:
- Wstępne ładowanie / jednorazowe przetworzenie
- Nie planujemy kolejnych zasileń z tej tabeli
Kiedy należy przechowywać stan CDC:
- Przetwarzamy zmiany z tabeli źródłowej w sposób ciągły
(cykliczne zasilenia, synchronizacje)
SQLDay 2014
Change Data Capture – cdc_states table
CREATE TABLE [dbo].[cdc_states](
[name] [nvarchar](100) NOT NULL,
[state] [nvarchar](256) NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cdc_states] ADD CONSTRAINT [PK_cdc_states] PRIMARY KEY CLUSTERED
(
[name] ASC
) WITH (PAD_INDEX = OFF) ON [PRIMARY]
GO
SQLDay 2014
Change Data Capture
Komponenty CDC w SSIS 2012:
• Control Flow:
– CDC Control Task Editor
• Data Flow:
– CDC Source
– CDC Splitter
SQLDay 2014
CDC Control Task Editor
CDC control operation:
- Mark initial load start
- Mark initial load end
- Mark CDC start
- Get processing range
- Mark processed range
SQLDay 2014
CDC Source
CDC Processing Mode:
- All
- All with old values
- Net
- Net with update mask
- Net with merge
SQLDay 2014
CDC Splitter
_$operation:
1 – Delete
2 – Insert
3 – Update (before)
4 – Update (after)
5 – Merge (Insert OR Update)
SQLDay 2014
DEMO SSIS
CHANGE DATA CAPTURE
Change Data Capture
• Zalety:
– Asynchroniczny zapis do tabeli zmian,
– Automatyczne utworzenie Job-ów i wielu SP obsługujących mechanizm,
– Gotowe komponenty SSIS (2012),
– Łatwość budowy procesów synchronizacji,
– Wbudowane funkcje pobierania zmian z tabeli zmian (*_CT),
– Możliwość podglądu danych wprost z tabeli zmian (*_CT).
• Wady:
– Zwiększone zużycie zasobów dyskowych,
– Wielokrotne duplikowanie tych samych encji,
– Enterprise Edition.
SQLDay 2014
PODSUMOWANIE
Change Tracking Change Data Capture
Tracked DML Changes  
Rodzaj operacji DML  
Czy kolumna została zmieniona  
Zapis informacji
Natychmiast
(Synchroniczny)
Opóźniony
(Asynchroniczny via SQL Agent)
Dane historyczne  
Lokalizacja docelowa
Tabela wewnętrzna
(INTERNAL)
Transaction Log
+ Tabela systemowa *_CT
Zajętość zasobów dyskowych Niewiele Znacząca
Komponenty SSIS  
Edycja Wszystkie (w tym Express) Enterprise
SQLDay 2014
Q&A
SQLDay 2014
Pytania?
DZIĘKUJĘ ZA UWAGĘ
Zapraszam do kontaktu:
Kamil Nowiński
kamil@nowinski.net
kamil.nowinski
http://pl.linkedin.com/in/kamilnowinski/
SQLDay 2014
NASI SPONSORZY I PARTNERZY
Organizacja: Polskie Stowarzyszenie Użytkowników SQL Server - PLSSUG

Más contenido relacionado

Similar a SQLDay 2014 - Change Tracking & Change Data Capture

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbaćBartosz Ratajczyk
 
DATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAWDATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAWPawel Wawrzyniak
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaTobias Koprowski
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuHighWheelSoftware
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Tomasz Cieplak
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceKamil Nowinski
 
DBPLUS Performance Monitor dla Microsoft SQL Server
DBPLUS Performance Monitor dla Microsoft SQL ServerDBPLUS Performance Monitor dla Microsoft SQL Server
DBPLUS Performance Monitor dla Microsoft SQL ServerDBPLUS
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PROIDEA
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQLExpert.pl
 
Nowa wersja systemu - upgrade czy re-implementacja
Nowa wersja systemu - upgrade czy re-implementacjaNowa wersja systemu - upgrade czy re-implementacja
Nowa wersja systemu - upgrade czy re-implementacjaBARTEKWACHNIK
 
Czwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyCzwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyMariusz Koprowski
 
VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesSSAS.PL
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...twitch.tv/katmpb
 
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?The Software House
 
Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Przemysław ...
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Kamil Nowinski
 

Similar a SQLDay 2014 - Change Tracking & Change Data Capture (20)

"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
DATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAWDATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAW
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005Poland- Smart Client Technology - MTS 2005
Poland- Smart Client Technology - MTS 2005
 
Zasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyceZasilanie hurtowni danych w SSIS w praktyce
Zasilanie hurtowni danych w SSIS w praktyce
 
DBPLUS Performance Monitor dla Microsoft SQL Server
DBPLUS Performance Monitor dla Microsoft SQL ServerDBPLUS Performance Monitor dla Microsoft SQL Server
DBPLUS Performance Monitor dla Microsoft SQL Server
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
Po co mi Temporal Tables?
Po co mi Temporal Tables?Po co mi Temporal Tables?
Po co mi Temporal Tables?
 
Sql day2015 fts
Sql day2015 ftsSql day2015 fts
Sql day2015 fts
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
 
Nowa wersja systemu - upgrade czy re-implementacja
Nowa wersja systemu - upgrade czy re-implementacjaNowa wersja systemu - upgrade czy re-implementacja
Nowa wersja systemu - upgrade czy re-implementacja
 
Czwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawyCzwartki z bi - Reporting Services - podstawy
Czwartki z bi - Reporting Services - podstawy
 
VirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting ServicesVirtualStudy.pl - Czwartki z BI - Reporting Services
VirtualStudy.pl - Czwartki z BI - Reporting Services
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
Monitoring systemu. Dlaczego mój kardiolog jest bogatym człowiekiem?
 
Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008Współpraca Pakietu Office 2007 z MSSQL 2008
Współpraca Pakietu Office 2007 z MSSQL 2008
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
Liquibase w praktyce
Liquibase w praktyceLiquibase w praktyce
Liquibase w praktyce
 

SQLDay 2014 - Change Tracking & Change Data Capture

  • 1. NASI SPONSORZY I PARTNERZY
  • 2. Szpiedzy z krainy bazy danych, czyli Change Tracking & Change Data Capture w służbie SQL Server Kamil Nowiński
  • 3. PRELEGENT • Programista od 12-tego roku życia • Ponad 10-letnie doświadczenie (DEV/DBA) • Technologie Microsoft: – Programowanie: VB6, VB.NET, C#, .NET Framework – Bazy danych: Microsoft SQL 2000 – 2012 Administracja & Programowanie (T-SQL) • Pasjonat baz danych • Członek PLSSUG, prelegent wrocławskich spotkań • Certyfikaty: MCITP, MCP, MCTS, MCSA SQL Server • Zainteresowania zawodowe: – Optymalizacja baz danych, Hurtownie danych, SSIS SQLDay 2014 Kamil Nowiński
  • 4. AGENDA • Cel do osiągnięcia • Ogólna koncepcja CHANGE TRACKING • Korzyści, Sposób uruchomienia, Ustawienia i uprawnienia • Funkcje zmian + DEMO • Ogólna koncepcja CHANGE DATA CAPTURE • Przebieg CDC, stan CDC • Komponenty SSIS + DEMO • Zalety i wady • Podsumowanie i dyskusja SQLDay 2014
  • 5. Siedź, Śledź, … - Audytuj • Cel: – Wskazanie wierszy, które uległy zmianie/usunięciu od czasu… • Jak to było wcześniej… – DML Triggers – bardzo kosztowne operacje (wzrost czasu wykonania) – Dodatkowe tabele – przechowywanie info o zmianach – Konieczność czyszczenia dodatkowych tabel • Wady: – Czasochłonne (kosztowne) tworzenie wyzwalaczy i tabel dodatkowych – Spadek wydajności – Złożone procesy SQLDay 2014
  • 6. Change Tracking - koncepcja • Śledzimy zmiany DML (ang. Data Manipulation Language): INSERT, UPDATE, DELETE • Poszczególne wiersze wybranej tabeli • Interesuje nas tylko ostatnia zmiana – Nie: ile razy wiersz został zmodyfikowany – Nie: jakie wartości (historyczne) były przed zmianami • Zapis synchroniczny (w transakcji operacyjnej) • Zapis tylko wartości PK (Primary Key) SQLDay 2014
  • 7. Change Tracking - wprowadzenie • Funkcjonalność wprowadzona w SQL Server 2008 • Poziom kompatybilności >= 90 • Uprawniania: – SELECT (min. do PK tabeli źródłowej) – VIEWCHANGETRACKING • Każda tabela = jedna tablica zmian • Przechowywanie wartości klucza głównego • Zmiany dostępne przez tzw. funkcje zmian SQLDay 2014
  • 8. Change Tracking - uruchamianie • Uruchomienie mechanizmu: – Włączenie dla bazy danych – Ustawienie parametrów – Włączenie dla wybranej tabeli/tabel • Narzędzia: – SSMS – T-SQL (ALTER DATABASE, ALTER TABLE) SQLDay 2014
  • 9. Change Tracking – funkcje zmian • CHANGETABLE() –CHANGES – lista zmian od czasu X –VERSION – informacja o wskazanym wierszu • CHANGE_TRACKING_CURRENT_VERSION() • CHANGE_TRACKING_MIN_VALID_VERSION(table) • CHANGE_TRACKING_IS_COLUMN_IN_MASK() • WITH CHANGE_TRACKING_CONTEXT()
  • 11. Change Tracking • Zalety: – Synchroniczny zapis do tabeli zmian, – Brak konieczności tworzenia własnych wyzwalaczy i dodatkowych tabel, – Minimalne obciążenie dla silnika bazy danych, – Prostota działania, – Minimalna zajętość przestrzeni dyskowej, – Wbudowane funkcje pobierania zmian w zapytaniach, – Auto CleanUp, – Dostępny już od edycji Express (darmowa). • Wady: – Synchroniczny zapis do tabeli zmian, – Informacja tylko o ostatniej zmianie encji (zmiany netto), – Brak komponentów SSIS (wada?). SQLDay 2014
  • 12. Change Data Capture • Koncepcja: – Śledzimy Przechwytujemy zmiany DML (ang. Data Manipulation Language): INSERT, UPDATE, DELETE – Poszczególne wiersze wybranej tabeli – Interesuje nas każda zmiana • Tak: ile razy wiersz został zmodyfikowany • Tak: jakie wartości (historyczne) były przed zmianami SQLDay 2014
  • 13. Change Data Capture • Transaction Log • SQL Agent • Instancja przechwytywania • max. dwie na tabelę źródłową • Asynchroniczny zapis: • co 5 sekund • max. 10x500 operacji • Stan CDC • Zapis LSN (Log Sequence Number) SQLDay 2014
  • 15. Change Data Capture SQLDay 2014 Wstępne ładowanie danych Synchronizowanie zmian przy użyciu CDC Typy zmian w tabeli źródłowej: - INSERT - UPDATE - DELETE [Pakiet SSIS] + odczyt zmiany z tabeli _CT + wyrażenie MERGE Pakiet SSIS: Nowe komponenty SQL Server 2012 Przebieg CDC (ang. CDC Run) – dwa pakiety SSIS
  • 16. Change Data Capture – Stan CDC Stan CDC – łańcuch znakowy w formacie: <state-name>/CD/<cs-lsn>/[CE/<ce-lsn>/][IR/<ir-start>/<ir- end>/]TS/<timestamp>/ER/<short-error-text> Przykład: TFEND/CS/0x000000EA00001F700002/TS/2014-04-15T06:23:44.3314094/ SQLDay 2014
  • 17. Change Data Capture – Łańcuch stanu CDC SQLDay 2014 Segment Opis <state-name> Nazwa bieżącego stanu CDC (np. ILSTART, ILEND, ILUPDATE, TFEND, TFSTART, TFREDO, ERROR) CS Current Start - Aktualny punkt początkowy przetwarzania <cs-lsn> Ostatni LSN przetworzony w poprzednim przebiegu CDC CE Current End – Bieżący punkt końcowy przetwarzania <ce-lsn> Ostatni LSN, który ma być przetworzony w bieżącym przebiegu CDC IR Początkowy zakres przetwarzania <ir-start> LSN zmiany bezpośrednio przed rozpoczęciem wstępnego ładowania <ir-end> LSN zmiany bezpośrednio po zakończeniu wstępnego ładowania TS Sygnatura czasowa ostatniej aktualizacji CDC <timestamp> Dziesiętna reprezentacja 64-bitowej właściwości System.DateTime.UtcNow ER Łańcuch stanu, jeśli ostatnia operacja CDC zakończyła się niepowodzeniem <short-error-text> Zawiera krótki opis błędu jeśli takowy wystąpił
  • 18. Change Data Capture – Typy stanów CDC SQLDay 2014 Stan Opis 0 – (INITIAL) Stan początkowy przed uruchomieniem jakiegokolwiek pakietu w bieżącej grupie CDC. ILSTART Initial Load Started Stan występuje podczas wstępnego ładowania danych. ILEND Initial Load Ended Stan występuje po udanym zakończeniu wstępnego ładowania. ILUPDATE Initial Load Update Stan występuje przy przetwarzaniu wstępnego zakresu zmian CDC. (pierwszy przebieg po wstępnym ładowaniu danych) TFEND (CDC change processing Update Ended) Stan kontekstu CDC, gdy poprzedni przebieg CDC zakończył się powodzeniem. Gotowość do przetwarzania kolejnego zakresu zmian. TFSTART (CDC change processing Ended) Stan kontekstu CDC gdy zakończyło się przetwarzanie wstępnego zakresu zmian. Oznacza to albo zwykły przebieg CDC, który jeszcze się nie zakończył, albo przebieg CDC zakończony błędem. TFREDO (Reprocessing Trickle-Feed Updates) Stan jest używany, gdy poprzedni przebieg nie został czysto zakończony i jest właśnie powtarzany. ERROR Grupa CDC znajduje się w stanie błędu.
  • 19. Change Data Capture Kiedy można nie przechowywać stanu CDC: - Wstępne ładowanie / jednorazowe przetworzenie - Nie planujemy kolejnych zasileń z tej tabeli Kiedy należy przechowywać stan CDC: - Przetwarzamy zmiany z tabeli źródłowej w sposób ciągły (cykliczne zasilenia, synchronizacje) SQLDay 2014
  • 20. Change Data Capture – cdc_states table CREATE TABLE [dbo].[cdc_states]( [name] [nvarchar](100) NOT NULL, [state] [nvarchar](256) NOT NULL ) ON [PRIMARY] GO ALTER TABLE [dbo].[cdc_states] ADD CONSTRAINT [PK_cdc_states] PRIMARY KEY CLUSTERED ( [name] ASC ) WITH (PAD_INDEX = OFF) ON [PRIMARY] GO SQLDay 2014
  • 21. Change Data Capture Komponenty CDC w SSIS 2012: • Control Flow: – CDC Control Task Editor • Data Flow: – CDC Source – CDC Splitter SQLDay 2014
  • 22. CDC Control Task Editor CDC control operation: - Mark initial load start - Mark initial load end - Mark CDC start - Get processing range - Mark processed range SQLDay 2014
  • 23. CDC Source CDC Processing Mode: - All - All with old values - Net - Net with update mask - Net with merge SQLDay 2014
  • 24. CDC Splitter _$operation: 1 – Delete 2 – Insert 3 – Update (before) 4 – Update (after) 5 – Merge (Insert OR Update) SQLDay 2014
  • 26. Change Data Capture • Zalety: – Asynchroniczny zapis do tabeli zmian, – Automatyczne utworzenie Job-ów i wielu SP obsługujących mechanizm, – Gotowe komponenty SSIS (2012), – Łatwość budowy procesów synchronizacji, – Wbudowane funkcje pobierania zmian z tabeli zmian (*_CT), – Możliwość podglądu danych wprost z tabeli zmian (*_CT). • Wady: – Zwiększone zużycie zasobów dyskowych, – Wielokrotne duplikowanie tych samych encji, – Enterprise Edition. SQLDay 2014
  • 27. PODSUMOWANIE Change Tracking Change Data Capture Tracked DML Changes   Rodzaj operacji DML   Czy kolumna została zmieniona   Zapis informacji Natychmiast (Synchroniczny) Opóźniony (Asynchroniczny via SQL Agent) Dane historyczne   Lokalizacja docelowa Tabela wewnętrzna (INTERNAL) Transaction Log + Tabela systemowa *_CT Zajętość zasobów dyskowych Niewiele Znacząca Komponenty SSIS   Edycja Wszystkie (w tym Express) Enterprise SQLDay 2014
  • 29. DZIĘKUJĘ ZA UWAGĘ Zapraszam do kontaktu: Kamil Nowiński kamil@nowinski.net kamil.nowinski http://pl.linkedin.com/in/kamilnowinski/ SQLDay 2014
  • 30. NASI SPONSORZY I PARTNERZY Organizacja: Polskie Stowarzyszenie Użytkowników SQL Server - PLSSUG