Udostępnij za pomocą


Włączanie i wyłączanie śledzenia zmian (SQL Server)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

W tym artykule opisano sposób włączania i wyłączania śledzenia zmian dla bazy danych i tabeli.

Włączanie śledzenia zmian dla bazy danych

Aby można było korzystać ze śledzenia zmian, należy włączyć śledzenie zmian na poziomie bazy danych. W poniższym przykładzie pokazano, jak włączyć śledzenie zmian przy użyciu opcji ALTER DATABASE SET.

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

Śledzenie zmian można również włączyć w narzędziu SQL Server Management Studio, korzystając z okna dialogowego Właściwości bazy danych (strona ChangeTracking). Jeśli baza danych zawiera tabele zoptymalizowane pod kątem pamięci, nie można włączyć śledzenia zmian za pomocą programu SQL Server Management Studio. Aby włączyć, użyj języka T-SQL.

Opcje i CHANGE_RETENTION można określić po włączeniu AUTO_CLEANUP śledzenia zmian, a wartości można zmienić w dowolnym momencie po włączeniu śledzenia zmian.

Wartość przechowywania zmian określa okres przechowywania informacji o śledzeniu zmian. Informacje dotyczące śledzenia zmian, które są starsze niż ten okres, są okresowo usuwane. Podczas ustawiania tej wartości należy rozważyć, jak często aplikacje będą synchronizowane z tabelami w bazie danych. Określony okres przechowywania musi być co najmniej tak długi, jak maksymalny okres między synchronizacjami. Jeśli aplikacja uzyskuje zmiany w dłuższych odstępach czasu, zwracane wyniki mogą być nieprawidłowe, ponieważ niektóre informacje o zmianie prawdopodobnie zostały usunięte. Aby uniknąć uzyskiwania nieprawidłowych wyników, aplikacja może użyć funkcji systemu CHANGE_TRACKING_MIN_VALID_VERSION, aby określić, czy interwał między synchronizacjami był zbyt długi.

Możesz użyć AUTO_CLEANUP opcji , aby włączyć lub wyłączyć zadanie oczyszczania, które usuwa stare informacje śledzenia zmian. Może to być przydatne, gdy występuje tymczasowy problem uniemożliwiający synchronizowanie aplikacji, a proces usuwania informacji śledzenia zmian starszych niż okres przechowywania musi zostać wstrzymany do momentu rozwiązania problemu.

W przypadku każdej bazy danych korzystającej ze śledzenia zmian należy pamiętać o następujących kwestiach:

  • Aby korzystać ze śledzenia zmian, poziom zgodności bazy danych musi mieć wartość 90 lub większą. Jeśli baza danych ma poziom zgodności mniejszy niż 90, możesz skonfigurować śledzenie zmian. Jednak funkcja CHANGETABLE, która służy do uzyskiwania informacji o śledzeniu zmian, zwróci błąd.

  • Użycie izolacji migawki jest najprostszym sposobem zapewnienia spójności wszystkich informacji śledzenia zmian. Z tego powodu zdecydowanie zalecamy ustawienie ON izolacji migawki dla bazy danych. Aby uzyskać więcej informacji, zobacz Praca ze śledzeniem zmian (SQL Server).

Włączanie śledzenia zmian dla tabeli

Śledzenie zmian musi być włączone dla każdej tabeli, którą chcesz śledzić. Po włączeniu śledzenia zmian informacje śledzenia zmian są przechowywane dla wszystkich wierszy w tabeli, których dotyczy operacja DML.

W poniższym przykładzie pokazano, jak włączyć śledzenie zmian dla tabeli przy użyciu ALTER TABLE.

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

Można również włączyć śledzenie zmian dla tabeli w programie SQL Server Management Studio, korzystając z okna dialogowego Właściwości bazy danych (strona Śledzenie zmian).

TRACK_COLUMNS_UPDATED Gdy opcja jest ustawiona na ON, aparat bazy danych programu SQL Server przechowuje dodatkowe informacje o kolumnach, które zostały zaktualizowane do wewnętrznej tabeli śledzenia zmian. Śledzenie kolumn może umożliwić aplikacji synchronizowanie tylko tych kolumn, które zostały zaktualizowane. Może to poprawić efektywność i wydajność. Jednak ze względu na to, że utrzymywanie informacji o śledzeniu kolumn dodaje dodatkowe obciążenie magazynu, ta opcja jest domyślnie OFF ustawiona na wartość .

Wyłączanie śledzenia zmian dla tabeli lub bazy danych

Śledzenie zmian należy najpierw wyłączyć dla wszystkich tabel śledzonych przez zmiany, zanim śledzenie zmian będzie można ustawić OFF dla bazy danych. Aby określić tabele z włączonym śledzeniem zmian dla bazy danych, użyj widoku wykazu sys.change_tracking_tables.

W poniższym przykładzie pokazano, jak wyłączyć śledzenie zmian dla tabeli przy użyciu ALTER TABLE.

ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;

Jeśli żadne tabele w bazie danych nie śledzą zmian, można wyłączyć śledzenie zmian dla bazy danych. W poniższym przykładzie pokazano, jak wyłączyć śledzenie zmian dla bazy danych przy użyciu opcji ALTER DATABASE SET.

ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF