Включение и отключение отслеживания изменений (SQL Server)Enable and Disable Change Tracking (SQL Server)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этом разделе описано, как включить и отключить отслеживания изменений для базы данных и таблицы.This topic describes how to enable and disable change tracking for a database and a table.

Включение отслеживания изменений для базы данныхEnable Change Tracking for a Database

Прежде чем начать отслеживание изменений, его надо включить на уровне базы данных.Before you can use change tracking, you must enable change tracking at the database level. В следующем примере показано, как включить отслеживание изменений с помощью инструкции ALTER DATABASE.The following example shows how to enable change tracking by using ALTER DATABASE.

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

Включить отслеживание изменений можно также в среде SQL Server Management StudioSQL Server Management Studio , в диалоговом окне Свойства базы данных (страница "Отслеживание изменений") .You can also enable change tracking in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

При включении отслеживания изменений, а также в любое время в дальнейшем можно указать и изменить значения параметров CHANGE_RETENTION и AUTO_CLEANUP.You can specify the CHANGE_RETENTION and AUTO_CLEANUP options when you enable change tracking, and you can change the values at any time after change tracking is enabled.

Параметр срока хранения изменений определяет период времени, в течение которого сохраняются данные отслеживания изменений.The change retention value specifies the time period for which change tracking information is kept. Данные отслеживания изменений, срок хранения которых истек, периодически удаляются.Change tracking information that is older than this time period is removed periodically. При установке этого значения необходимо учитывать частоту синхронизации приложений с таблицами в базе данных.When you are setting this value, you should consider how often applications will synchronize with the tables in the database. Указанный срок хранения должен быть не меньше максимального периода времени между синхронизациями.The specified retention period must be at least as long as the maximum time period between synchronizations. Если приложение получает сведения об изменениях через более длительные интервалы, возвращаемые результаты могут оказаться неверными, поскольку часть сведений об изменениях могла уже быть удалена.If an application obtains changes at longer intervals, the results that are returned might be incorrect because some of the change information has probably been removed. Чтобы избежать неверных результатов, приложение может определить, не является ли интервал между синхронизациями чрезмерно большим, с помощью системной функции CHANGE_TRACKING_MIN_VALID_VERSION.To avoid obtaining incorrect results, an application can use the CHANGE_TRACKING_MIN_VALID_VERSION system function to determine whether the interval between synchronizations has been too long.

Параметр AUTO_CLEANUP используется для включения и отключения задачи очистки, в процессе выполнения которой удаляются старые данные отслеживания изменений.You can use the AUTO_CLEANUP option to enable or disable the cleanup task that removes old change tracking information. Он может оказаться полезным при возникновении временной проблемы, которая мешает синхронизации приложений и вызывает необходимость приостановки процесса удаления устаревших данных отслеживания изменений на период своего разрешения.This can be useful when there is a temporary problem that prevents applications from synchronizing and the process for removing change tracking information older than the retention period must be paused until the problem is resolved.

При этом следует учесть следующие моменты.For any database that uses change tracking, be aware of the following:

  • При отслеживании изменений уровень совместимости базы данных должен быть не ниже 90.To use change tracking, the database compatibility level must be set to 90 or greater. Если уровень совместимости базы данных менее 90, то можно настроить отслеживание изменений.If a database has a compatibility level of less than 90, you can configure change tracking. Однако функция CHANGETABLE, используемая для получения сведений об отслеживании изменений, возвратит ошибку.However, the CHANGETABLE function, which is used to obtain change tracking information, will return an error.

  • Простейший способ обеспечения согласованности всех данных отслеживания изменений — изоляция моментальных снимков.Using snapshot isolation is the easiest way for you to help ensure that all change tracking information is consistent. По этой причине настоятельно рекомендуется включить для базы данных изоляцию моментальных снимков.For this reason, we strongly recommend that snapshot isolation be set to ON for the database. Дополнительные сведения см. в разделе Работа с отслеживанием изменений (SQL Server).For more information, see Work with Change Tracking (SQL Server).

Включение отслеживания изменений для таблицыEnable Change Tracking for a Table

Отслеживание изменений должно быть включено для каждой отслеживаемой таблицы.Change tracking must be enabled for each table that you want tracked. Если отслеживание изменений включено, ведется сбор сведений об отслеживании для всех строк в таблице, на которую влияет операция DML.When change tracking is enabled, change tracking information is maintained for all rows in the table that are affected by a DML operation.

В следующем примере показано, как настроить отслеживание изменений для таблицы с помощью инструкции ALTER TABLE.The following example shows how to enable change tracking for a table by using ALTER TABLE.

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

Включить отслеживание изменений можно также в среде SQL Server Management StudioSQL Server Management Studio , в диалоговом окне Свойства базы данных (страница "Отслеживание изменений") .You can also enable change tracking for a table in SQL Server Management StudioSQL Server Management Studio by using the Database Properties (ChangeTracking Page) dialog box.

Если параметр TRACK_COLUMNS_UPDATED установлен в значение ON, компонент Компонент SQL Server Database EngineSQL Server Database Engine сохраняет во внутренней таблице отслеживания дополнительные сведения о столбцах, которые были обновлены.When the TRACK_COLUMNS_UPDATED option is set to ON, the Компонент SQL Server Database EngineSQL Server Database Engine stores extra information about which columns were updated to the internal change tracking table. Отслеживание столбцов позволяет приложению синхронизировать только те столбцы, которые были обновлены.Column tracking can enable an application to synchronize only those columns that were updated. Это может повысить эффективность и производительность.This can improve efficiency and performance. Но поскольку отслеживание столбцов требует дополнительного места на диске, по умолчанию этот параметр имеет значение OFF.However, because maintaining column tracking information adds some extra storage overhead, this option is set to OFF by default.

Отключение отслеживания изменений для базы данных или таблицыDisable Change Tracking for a Database or Table

Перед отключением отслеживания изменений для базы данных необходимо отключить его для всех таблиц в этой базе.Change tracking must first be disabled for all change-tracked tables before change tracking can be set to OFF for the database. Чтобы определить, для каких таблиц было включено отслеживание изменений, воспользуйтесь представлением каталога sys.change_tracking_tables .To determine the tables that have change tracking enabled for a database, use the sys.change_tracking_tables catalog view.

Если ни для одной из таблиц базы данных отслеживание изменений не настроено, то оно может быть отключено и на уровне базы данных.When no tables in a database track changes, you can disable change tracking for the database. В следующем примере показано, как отключить отслеживание изменений для базы данных с помощью инструкции ALTER DATABASE.The following example shows how to disable change tracking for a database by using ALTER DATABASE.

ALTER DATABASE AdventureWorks2012  
SET CHANGE_TRACKING = OFF  

В следующем примере показано, как отключить отслеживание изменений для таблицы с помощью инструкции ALTER TABLE.The following example shows how to disable change tracking for a table by using ALTER TABLE.

ALTER TABLE Person.Contact  
DISABLE CHANGE_TRACKING;  

См. также:See Also

Свойства базы данных (страница "Отслеживание изменений") Database Properties (ChangeTracking Page)
Параметры ALTER DATABASE SET (Transact-SQL) ALTER DATABASE SET Options (Transact-SQL)
sys.change_tracking_databases (Transact-SQL) sys.change_tracking_databases (Transact-SQL)
sys.change_tracking_tables (Transact-SQL) sys.change_tracking_tables (Transact-SQL)
Отслеживание измененных данных (SQL Server) Track Data Changes (SQL Server)
Об отслеживании изменений (SQL Server) About Change Tracking (SQL Server)
Работа с информацией об изменениях (SQL Server) Work with Change Data (SQL Server)
Управление отслеживанием изменений (SQL Server)Manage Change Tracking (SQL Server)