Konfigurowanie i zarządzanie śledzenia zmian

W tym temacie opisano sposób włączania, wyłączania i zarządzać śledzenia zmian.Opisano również, jak skonfigurować zabezpieczenia, określenia wpływu na przechowywania i wydajność, gdy używany jest śledzenie zmian.

Włączanie zmian bazy danych

Przed użyciem śledzenia zmian, należy włączyć śledzenie poziom bazy danych zmian.W poniższym przykładzie pokazano, jak włączyć śledzenie przy użyciu zmian ALTER DATABASE:

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

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

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

Zmiana wartości retencji Określa czas okres, w którym zmiana informacji śledzenia jest przechowywana.Informacje, które są starsze niż to śledzenie zmian czas okres jest okresowo usuwane.Po ustawieniu tej wartości należy rozważyć, jak często aplikacje będą synchronizowane z tabelami w bazie danych.Okres zachowywania określonych musi być co najmniej tak długo, jak okres maksymalny czas między synchronizacjami.Jeśli aplikacja uzyskuje zmiany w dłuższych odstępach czasu, zwracane wyniki mogą być niepoprawne, ponieważ niektóre informacje o zmianach prawdopodobnie zostały usunięte.Aby uniknąć uzyskanie niepoprawnych wyniki, aplikacji można użyć funkcja systemu CHANGE_TRACKING_MIN_VALID_VERSION do określenia, czy interwał między synchronizacjami upłynął zbyt długi czas.

Opcja AUTO_CLEANUP Aby włączyć lub wyłączyć zadania oczyszczania usuwa stare informacji śledzenia zmian.Może to być przydatne, gdy wystąpił tymczasowy problem, który uniemożliwia aplikacjom synchronizowanie i być wstrzymany proces usuwania starsze niż okres zachowywania informacji śledzenia zmian, aż problem zostanie rozwiązany.

Dla każdej bazy danych, który używa do śledzenia zmian należy pamiętać o następujących czynności:

  • Aby używać śledzenia zmian, poziom zgodności bazy danych musi być zestaw 90 lub większa.Jeśli baza danych zawiera poziom zgodności mniej niż 90, można skonfigurować śledzenia zmian.Jednak funkcja CHANGETABLE, która jest używana do uzyskiwania informacji śledzenia zmian, zwróci błąd.

  • Przy użyciu migawka izolacji jest najłatwiejszy sposób zapewnić, że wszystkich informacji śledzenia zmian jest spójny.Z tego powodu zaleca się że izolacji migawka jest zestaw on dla bazy danych.Aby uzyskać więcej informacji, zobacz Używanie śledzenia zmian.

Włączanie tabeli śledzenia zmian

Dla każdej tabela, która ma być śledzone, musi być włączone śledzenie zmian.Podczas śledzenia zmian jest włączona, śledzenie zmian jest zachowywana dla wszystkich wierszy w tabela dotyczy DML operacji.

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

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

Można także włączyć zmian w tabela w SQL Server Management Studio za pomocą tabela właściwości strony ChangeTracking okno dialogowe.

Gdy opcja TRACK_COLUMNS_UPDATED jest zestaw on, Aparat baz danych programu SQL Server przechowuje dodatkowe informacje o tym, które kolumny zostały zaktualizowane do tabela śledzenia zmian wewnętrznego. Kolumny śledzenia można włączyć aplikację zsynchronizować tylko kolumny, które zostały zaktualizowane. Może to zwiększyć efektywność i wydajnośćJednak ponieważ utrzymanie śledzenie informacji o kolumnie dodaje niektóre koszty dodatkowej pamięci masowej, opcja ta jest zestaw do wyłączone domyślnie.

Wyłączenie śledzenia zmian

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

Poniższy przykład ilustruje sposób wyłączania śledzenia dla tabela przy użyciu zmian ALTER tabela:

ALTER TABLE Person.Person
DISABLE CHANGE_TRACKING;

Gdy żadnych tabel w bazie danych śledzenia zmian, można wyłączyć zmian bazy danych.Poniższy przykład ilustruje sposób wyłączania śledzenia dla bazy danych przy użyciu zmian ALTER DATABASE:

ALTER DATABASE AdventureWorks2008R2
SET CHANGE_TRACKING = OFF;

Zarządzanie śledzenia zmian

Na poniższej liście sekcje widoki wykazu, uprawnienia i ustawienia, które są istotne dla zarządzania śledzenia zmian.

Wykaz widoków

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

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

Zabezpieczenia

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

  • Uprawnienie SELECT co najmniej klucz podstawowy kolumn w tabela śledzone zmiany do tabela, którego dotyczy kwerenda.

  • Uprawnienie ŚLEDZENIE zmian w WIDOKU tabela, dla których uzyskiwane są zmiany.Wymagane jest uprawnienie WYŚWIETL ŚLEDZENIE zmian z następujących powodów:

    • Rekordów śledzenia zmian zawierają informacje o wierszach, które zostały usunięte, w szczególności klucz podstawowy wartości wierszy, które zostały usunięte.Główny zobowiązany może przyznano uprawnienie SELECT dla tabela prześledzone zmiany po niektóre dane poufne zostało usunięte.W tym przypadek nie należy, główne mogły usuniętych informacji za pomocą śledzenia zmian.

    • Śledzenie zmian można przechowywać informacje o kolumnach zostały zmienione przez operacje aktualizacji.Główny zobowiązany może odmowa uprawnień do kolumna, która zawiera ważne informacje.Jednak ponieważ śledzenie zmian jest dostępne, zleceniodawca może określić, że wartość kolumna została zaktualizowana, ale główny nie może określić wartości kolumna.

Opis napowietrznych śledzenia zmian

Gdy śledzenie zmian jest włączona dla tabela, niektóre operacje administracyjne są zagrożone.W poniższej tabela przedstawiono operacje i efekty, należy rozważyć.

Operacja

Gdy śledzenie zmian jest włączona

USUNĄĆ TABELĘ

Usunięcie wszystkich informacji porzuconych tabela śledzenia zmian.

ALTER TABELI DROP CONSTRAINT

Aby usunąć ograniczenie klucza podstawowego powiedzie się.Zanim ograniczenie na klucz podstawowy może być odrzucone, należy wyłączyć śledzenie zmian.

ALTER TABELI UPUSZCZANIA KOLUMNY

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

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

ALTER TABELI DODAJ KOLUMNĘ

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

ALTER TABELI ZMIEŃ KOLUMNĘ

Typ danych bez zmian-klucz podstawowy kolumny nie są śledzone.

PRZEŁĄCZNIK TABELI ALTER

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

Usuwanie INDEKSU lub wyłączyć zmiany INDEKSU

Indeks, który wymusza klucz podstawowy nie mogą być usunięte lub wyłączone.

OBCINANIE TABELI

Obcinanie tabela można przeprowadzić na tabela, która ma włączone jest śledzenie zmian.Jednakże nie są śledzone wierszy, które są usuwane przez operację i zaktualizowana wersja obowiązująca minimalna.Gdy aplikacja sprawdza jego wersji, wyboru wskazuje, że wersja jest przestarzała i ponownego zainicjowania jest wymagany.To samo śledzenia zmian jest wyłączone, a następnie reenabled w tabela.

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

Wpływ naDML

Aby zminimalizować wydajności narzuty na operacje DML został zoptymalizowany śledzenia zmian.Przyrostowe obciążenie, skojarzony z pomocą zmian w tabela jest podobne do nadmiarowej, gdy indeks jest tworzony dla tabela i musi być utrzymane.

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

  • Liczba klucz podstawowy kolumny

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

  • Liczba operacji wykonanych w transakcji

Migawki izolacji Jeśli używana, ma także wpływ na wydajność wszystkie operacje DML, czy oledzenie zmian jest włączona, czy nie.

Skutki dla magazynu

Dane śledzenia zmian są przechowywane w następujących rodzajów wewnętrznych tabel:

  • Tabela Zmiana wewnętrznych

    Istnieje jedna tabela zmiana wewnętrznych dla każdej tabeli użytkownika, który ma włączone jest śledzenie zmian.

  • Transakcji wewnętrznych tabela

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

Te tabele wewnętrznej 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 dodawany jest wiersz do tabela Zmiana wewnętrznych.Ten wiersz ma mały stałej napowietrznych plus zmiennej równa narzutów rozmiar klucz podstawowy kolumny.Wiersz może zawierać informacje opcjonalne kontekstu zestaw przez aplikację.I, jeśli włączone jest śledzenie kolumny, każda kolumna zmienionych wymaga 4 bajty w tabela śledzenia.

  • Dla każdej transakcji popełnione dodawany jest wiersz do tabela wewnętrzną transakcję.

Jak z innymi tabelami wewnętrznego można określić miejsce używane dla zmian tabel za pomocą sp_spaceused procedura składowana.Nazwy tabel wewnętrznego można uzyskać za pomocą sys.internal_tables wykazu widoku, jak pokazano w następującym przykładzie:

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