Udostępnij za pośrednictwem


Configuring and Managing Change Tracking

W tym temacie opisano sposób włączania, wyłączania i zarządzania nimi śledzenia zmian.Go również informacje dotyczące konfigurowania zabezpieczeń, określenia wpływu na przechowywania i wydajność, gdy używany jest śledzenie zmian.

Zmień włączania śledzenia dla bazy danych

Przed użyciem śledzenia zmian, należy włączyć śledzenie poziom bazy danych zmian.W poniższym przykładzie pokazano sposób włączania śledzenia przy użyciu zmian ZMIENIANIE BAZY DANYCH:

ALTER DATABASE AdventureWorks
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)

Można także włączyć śledzenie w zmian SQL Server Management Studio za pomocą Właściwości bazy danych (strona ChangeTracking) -okno dialogowe.

Można określić opcje CHANGE_RETENTION i AUTO_CLEANUP po włączeniu śledzenia zmian i można zmienić wartości w dowolnym czas po włączeniu śledzenia zmian.

Wartość zachowywania zmian określa okres czas, dla których zmiany informacji śledzenia są przechowywane.Zmienić informacje o śledzeniu, która jest starsza niż ten okres jest usuwany co pewien czas.Po ustawieniu tej wartości należy rozważyć, jak często aplikacje będą synchronizowane z tabelami w bazie danych.Okres zachowywania określonego musi być przynajmniej tak długo, jak maksymalny okres między synchronizacji.Jeśli aplikacja uzyskuje zmian w odstępach dłużej, wyniki zostaną zwrócone mogą być niepoprawne, ponieważ niektóre z informacji o zmianie prawdopodobnie została usunięta.Aby uniknąć uzyskanie niepoprawnych wyniki, aplikacja funkcja CHANGE_TRACKING_MIN_VALID_VERSION systemu do ustalenia, czy interwał między synchronizacji upłynął zbyt długi czas.

Opcja AUTO_CLEANUP służy do włączania lub wyłączania zadanie oczyszczania, które powoduje usunięcie starych informacji zmian.Może to być przydatne, gdy wystąpił tymczasowy problem uniemożliwiający aplikacji z synchronizacją i musi być wstrzymany proces usuwania informacje starsze niż okres zachowywania zmian, aż problem zostanie rozwiązany.

Dla każdej bazy danych używa do śledzenia zmian należy pamiętać o następujących kwestiach:

  • Aby używać śledzenia zmian, należy ustawić poziom zgodności bazy danych, 90 lub większej.Jeśli baza danych ma poziom zgodności mniejsza niż 90, można skonfigurować śledzenia zmian.Jednak funkcja CHANGETABLE, która jest używana do uzyskiwania informacji śledzenia zmian, zwróci błąd.

  • Za pomocą migawka izolacji jest najłatwiejszy sposób upewnić się, że wszystkie zmiany informacji śledzenia jest zgodne.Z tego powodu zaleca się że izolacji migawka być zestaw on dla bazy danych.Aby uzyskać więcej informacji zobaczZa pomocą śledzenia zmian.

Zmień włączania śledzenia dla tabela

Dla każdej tabela, które mają być śledzone, należy włączyć śledzenie zmian.Podczas śledzenia zmian jest włączone, informacje śledzenia zmian jest zachowywana dla wszystkich wierszy w tabela, których dotyczy operacja DML.

W poniższym przykładzie pokazano sposób włączania śledzenia dla tabela przy użyciu zmian ALTER tabela:

ALTER TABLE Person.Contact
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)

Można także włączyć śledzenie dla tabeli w zmian SQL Server Management Studio za pomocą Tabela Właściwości strona ChangeTracking-okno dialogowe.

Gdy opcja TRACK_COLUMNS_UPDATED jest zestaw on, SQL Server Database Engine przechowuje dodatkowe informacje o tym, które zostały zaktualizowane kolumn do tabela śledzenia zmian wewnętrznego. Kolumna śledzenie można włączyć aplikację zsynchronizować tylko te kolumny, które zostały zaktualizowane.Może to zwiększyć efektywność i wydajność.Jednak ponieważ utrzymanie informacje o śledzeniu kolumna dodaje pewne dodatkowe obciążenie związane z dodatkowej pamięci, opcja ta ma wartość OFF domyślnie.

Wyłączanie śledzenia zmian

Śledzenie zmian należy najpierw wyłączyć dla wszystkich tabel śledzone zmiany przed śledzenia zmian zestaw na OFF dla bazy danych.Aby określić tabele, które zostały włączone dla bazy danych śledzenia zmian, należy użyć sys.change_tracking_tables Służy do wyświetlania katalogu.

W poniższym przykładzie pokazano sposób wyłączania śledzenia dla tabela przy użyciu zmian ALTER tabela:

ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;

W przypadku tabel w bazie danych śledzenia zmian, można wyłączyć zmian w bazie danych.W poniższym przykładzie pokazano sposób wyłączania śledzenia dla bazy danych przy użyciu zmian ZMIENIANIE BAZY DANYCH:

ALTER DATABASE AdventureWorks
SET CHANGE_TRACKING = OFF

Zarządzanie śledzenia zmian

W poniższych sekcjach listy wykazu widoki, uprawnienia i ustawienia, które są odpowiednie do zarządzania śledzenia zmian.

Widoki wykazów

Aby określić, które tabele i baz danych mają włączone oledzenie, można użyć następujących widoki wykazu:

Ponadto sys.internal_tables wykazu widoku wyświetlana jest lista wewnętrznych tabel, które są tworzone podczas śledzenia zmian jest włączona dla tabela użytkownika.

Zabezpieczenia

Śledzenie za pomocą informacji o zmianie dostępu Zmienianie funkcji śledzenia, główny musi mieć następujące uprawnienia:

  • SELECT uprawnień na co najmniej kolumny klucz podstawowy w tabela śledzone zmiany do tabela, która jest poszukiwanych.

  • OLEDZENIE VIEW uprawnienia w tabela, dla których uzyskuje się ich zmiany.Wymagane jest uprawnienie VIEW OLEDZENIE z następujących powodów:

    • Rekordów śledzenia zmian zawiera wiersze, które zostały usunięte, w szczególności wartości klucz podstawowy z wierszy, które zostały usunięte.Obiektem może przyznano uprawnienie SELECT dla tabela prześledzonych zmian po kilka dane poufne zostało usunięte.W takim wypadku nie należy, główne, aby można było uzyskać dostęp do tego usuniętych informacji za pomocą śledzenia zmian.

    • Informacje śledzenia zmian można przechowywać informacje o tym, które kolumny zostały zmienione przez operacji aktualizacji.Obiektem może odmówić uprawnień do kolumna, która zawiera ważne informacje.Jednak informacje śledzenia zmian jest dostępne, którą podmiot może ustalić, czy wartość kolumna została zaktualizowana, ale główny nie może określić wartości kolumna.

Opis narzuty śledzenia zmian

Gdy śledzenie zmian jest włączona dla tabela, wpływa to na niektóre operacje administracyjne.Poniższa tabela zawiera listę operacji i efekty, należy wziąć pod uwagę.

Operacja

Gdy włączone jest śledzenie zmian

USUNĄĆ tabela

Powoduje usunięcie wszystkich zmian informacji w tabela elementów usuniętych.

OGRANICZENIE UPUSZCZANIA ZMIANY tabela

Podjęto próbę upuść ograniczenia klucz podstawowy nie powiedzie się.Zanim ograniczenia klucz podstawowy może zostać odrzucone, należy wyłączyć śledzenie zmian.

ZMIANY tabela UPUSZCZANIA kolumna

Jeśli kolumna, która jest upuszczeniu jest częścią klucz podstawowy, upuszczając kolumna nie jest dozwolone, niezależnie od zmian.

Jeśli kolumna, która jest zostanie usunięty nie jest częścią klucz podstawowy, upuszczając kolumna powiedzie się.Jednak wpływ na dowolnej aplikacji, która synchronizuje dane te należy rozumieć najpierw.Po włączeniu śledzenia zmian kolumn w tabela porzuconych kolumna może być nadal zwracane jako część informacji śledzenia zmian.Jest zadaniem aplikacji do obsługi porzuconych kolumna.

KOLUMNA DODAWANIA ZMIANY tabela

Jeśli nowa kolumna jest dodawana do tabela prześledzone zmiany, dodanie kolumny nie są śledzone.Aktualizacje i zmiany wprowadzone do nowej kolumna są śledzone.

KOLUMNA ZMIANY ZMIANY tabela

Zmiana typu danych w kolumnach klucz podstawowy nie nie są śledzone.

PRZEŁĄCZNIK tabela ZMIANY

Przełączanie partycji nie powiedzie się, jeśli jedna lub obie tabele ma włączone rejestrowanie zmian.

DROP INDEX lub ALTER indeks wyłączona

Indeks, który będzie wymuszał klucz podstawowy nie może być usunięte lub wyłączone.

TRUNCATE TABLE

Obcinanie tabela mogą być wykonywane w tabela, która ma włączone rejestrowanie zmian.Jednak te wiersze, które są usuwane przez operację nie są śledzone i minimalne prawidłowej wersja są aktualizowane.Gdy aplikacja sprawdza, czy jego wersji, sprawdzanie wskazuje, że wersja jest przestarzała i reinicjowanie jest wymagany.Jest to taka sama, jak śledzenia zmian jest wyłączone, a następnie reenabled dla tabela.

Za pomocą śledzenia zmian powoduje dodania pewne dodatkowe obciążenie związane z operacjami DML z powodu zmian informacji przechowywanych w ramach operacji.

Wpływ na DML

Śledzenie zmian po optymalizacji wydajności obciążenie na operacje DML zminimalizować.Dodatkowe obciążenie związane skojarzony z za pomocą zmian w tabela jest podobna do obciążenia poniesione, gdy indeks jest tworzony dla tabela i musi być utrzymywane.

Dla każdego wiersza zostanie zmieniona przez operację DML wiersz jest dodawany do wewnętrznego zmian tabela.Efekt tego względem operację DML zależy od różnych czynników, takich jak:

  • Numer kolumny klucz podstawowy

  • Ilość danych, który został zmieniony w wierszu tabela użytkowników

  • Liczba operacje wykonywane w ramach transakcji

migawka izolacji, jeśli, ma także wpływ na wydajność wszystkie operacje DML, czy śledzenie zmian jest włączona, czy nie.

Wpływ na magazyn

Dane śledzenia zmian jest przechowywana w następujących typów wewnętrznych tabel:

  • Tabela Zmiana wewnętrzny

    Istnieje jedna tabela zmiany wewnętrznego dla każdej tabeli użytkownika, który ma włączone rejestrowanie zmian.

  • Transakcji wewnętrznych tabela

    Istnieje jedna tabela transakcję wewnętrzną bazę danych.

Wewnętrzny tabele te mają wpływ na wymagania dotyczące magazynu w następujący sposób:

  • Dla każdej zmiany, aby każdy wiersz w tabela użytkowników wiersz jest dodawane do tabela Zmiana wewnętrznego.Ten wiersz ma małych stałe obciążenie plus zmienną obciążenia równe rozmiar kolumny klucz podstawowy.Wiersz może zawierać informacje opcjonalne kontekstu ustawione przez aplikację.I, jeśli kolumna śledzenie jest włączone, każda kolumna zmienionych wymaga 4 bajty w tabela śledzenia.

  • Dla każdej transakcji zatwierdzone wiersz jest dodawany do tabela wewnętrznej transakcji.

Jak z innymi tabelami wewnętrznymi, można określić ilość miejsca używanego do śledzenia tabel za pomocą zmian sp_spaceused procedura przechowywana.Nazwy tabel, dla wewnętrznych można uzyskać za pomocą sys.internal_tables wykazu widoku, jak pokazano w poniższym przykładzie:

sp_spaceused 'sys.change_tracking_309576141'
sp_spaceused 'sys.syscommittab'