Włączanie i wyłączanie śledzenia zmian (SQL Server)
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym temacie 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 ALTER DATABASE.
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.
Można określić opcje CHANGE_RETENTION i AUTO_CLEANUP po włączeniu śledzenia zmian, a następnie zmienić wartości 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ć opcji AUTO_CLEANUP, 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 o śledzeniu 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 izolacji migawki na WŁĄCZONY dla bazy danych. Aby uzyskać więcej informacji, zobacz Praca z usługą Change Tracking (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).
Kiedy opcja TRACK_COLUMNS_UPDATED jest włączona, silnik bazy danych SQL Server przechowuje dodatkowe informacje o kolumnach, które zostały zaktualizowane, w 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 ponieważ utrzymywanie informacji o śledzeniu kolumn dodaje pewne dodatkowe obciążenie przechowywania, ta opcja jest domyślnie ustawiona na OFF.
Wyłączanie śledzenia zmian dla tabeli lub bazy danych
Śledzenie zmian musi być najpierw wyłączone dla wszystkich tabel śledzonych przez zmiany, zanim śledzenie zmian może zostać wyłączone 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 ALTER DATABASE.
ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF
Zobacz też
właściwości bazy danych (strona ChangeTracking)
ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL)
Śledzenie Zmian Danych (SQL Server)
Informacje o usłudze Change Tracking (SQL Server)
Praca z danymi zmian (SQL Server)
zarządzanie usługą Change Tracking (SQL Server)