Zastanawiamy się nad włączeniem przechwytywania danych zmiany serwera Sql dla nowego podsystemu, który budujemy.
Nie jest tak naprawdę, ponieważ go potrzebujemy, ale jesteśmy zmuszani do posiadania pełnej historii śledzenia, a CDC ładnie rozwiązałby ten wymóg przy minimalnym wysiłku z naszej strony.
Śledzimy sprawny proces programowania, co w tym przypadku oznacza, że często dokonujemy zmian w schemacie bazy danych, np. Dodając nowe kolumny, przenosząc dane do innych kolumn itp.
Zrobiliśmy mały test, w którym utworzyliśmy tabelę, włączyliśmy CDC dla tej tabeli, a następnie dodaliśmy nową kolumnę do tabeli. Zmiany w nowej kolumnie nie są rejestrowane w tabeli CDC.
Czy istnieje mechanizm aktualizowania tabeli CDC do nowego schematu i czy istnieją jakieś najlepsze praktyki postępowania z przechwyconymi danymi podczas migracji schematu bazy danych?
źródło
Odpowiedzi:
Niedawno zaczęliśmy patrzeć na CDC. Nie jestem ekspertem w tej dziedzinie, ale myślę, że mam kilka odpowiedzi na twoje pytania.
W przeważającej części CDC pomoże ci osiągnąć cel, którym jest całkowicie identyfikowalna historia, ale nie sądzę, że doprowadzi cię to do końca.
Po pierwsze:
I tutaj myślę, że CDC cię zawiedzie. Dokumentacja MSDN w sekcji „Zrozumienie narzutów związanych ze śledzeniem zmian” jest dość jasna, że nie będzie dla ciebie śledzić zmian schematu. Na przykład z
Alter Table Add Column
:Drop Column
jest trochę bardziej skomplikowany.Jednak powinieneś używać skryptów DB do zmiany schematu, więc niekoniecznie musisz polegać na CDC. Pozwala to zachować spójność między kontrolą jakości a schematami produkcji. I zmiana QA powinna być wykonana przez skrypt, aby dokładnie takie same zmiany mogły zostać zastosowane do Prod. Wyodrębnienie zmian schematu z tych skryptów nie powinno być trudne. Może to oznaczać, że wymiar „czasowy” historii zależy od wersji zamiast czasu rzeczywistego, ale wynik końcowy będzie taki sam.
Jeśli jeszcze go nie masz, utwórz tabelę, aby śledzić wersję schematu bazy danych. Następnie umieść tabelę wersji schematu bazy danych pod CDC, abyś mógł dopasować zmiany makroskopowe do schematu względem zmian mikroskopowych w obrębie konkretnej tabeli.
W moim rozumieniu nadal powinny być widoczne dane dodane do nowych kolumn, niezależnie od tego, czy CDC nie pokazuje zmiany schematu. A migracja danych z tabeli do tabeli powinna również zostać odebrana przez CDC.
Traktuj to tak, jakbyś traktował audyt. Musisz zrozumieć, co to jest, dlaczego to robisz i jak długo musisz przechowywać te informacje. Zakres i retencja to dwa największe błędy w tego typu zadaniach.
Narzędzia raportowania CDC są zrozumiałe, więc musisz znać kontekst zmian. Zbyt łatwo jest powiedzieć „śledź wszystko !” i w rezultacie nic nie nadaje się do użycia. Podobnie możesz podwoić rozmiar bazy danych, przechowując kopię każdej zmiany. Na stole o wysokiej rezygnacji z wieloma wstawkami i usunięciami skończysz astronomiczny rozwój. Samo w sobie nie jest to złe, ale musisz przewidzieć budżet na ten wzrost i mieć środki do zbadania wszystkich generowanych danych.
Dzięki temu wrócisz do zrozumienia, dlaczego jesteś zmuszany do pełnej identyfikowalności. Z pewnością istnieją uzasadnione powody tego wymogu. Ale nie będziesz w stanie ustrukturyzować skutecznego audytu bazy danych, dopóki nie dowiesz się, dlaczego musisz spełnić ten wymóg.
źródło
Jesteś w stanie śledzić dodawanie kolumn za pomocą wyzwalaczy DDL.
Możesz użyć grupy zdarzeń DDL_TABLE_EVENTS, aby uruchomić dla CREATE, DROP lub ALTER tabeli.
Jeśli jednak korzystasz z wersji Enterprise> 2008, możesz rzucić okiem na SQL Server Audit , ponieważ może on „połączyć wszystkie możliwości kontroli w specyfikację kontroli”. Ten link msdn zawiera szczegółowy artykuł na ten temat: http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx .
Następnie tworzysz Specyfikacje serwera lub bazy danych.
źródło
Simple-Talk ma świetny artykuł na temat przechwytywania danych o zmianach oraz bardzo szczegółowy przewodnik na temat CDC, a także dokumentacja MSDN wyjaśnia różne metody w zależności od wymagań. Ale oba mogą pomóc w spełnieniu określonych wymagań.
źródło