Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
База данных SQL в Microsoft Fabric
В этой статье описывается включение и отключение отслеживания изменений для базы данных и таблицы.
Включение отслеживания изменений для базы данных
Прежде чем начать отслеживание изменений, его надо включить на уровне базы данных. В следующем примере показано, как включить отслеживание изменений с помощью ALTER DATABASE SET параметров.
ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
Включить отслеживание изменений можно также в SQL Server Management Studio в диалоговом окне Свойства базы данных (страница "Отслеживание изменений"). Если база данных содержит оптимизированные для памяти таблицы, включить отслеживание изменений с помощью SQL Server Management Studio невозможно. Чтобы включить, используйте T-SQL.
Можно указать CHANGE_RETENTION и AUTO_CLEANUP параметры при включении отслеживания изменений, и вы можете изменять значения в любое время после включения отслеживания изменений.
Параметр срока хранения изменений определяет период времени, в течение которого сохраняются данные отслеживания изменений. Данные отслеживания изменений, срок хранения которых истек, периодически удаляются. При настройке этого значения следует учитывать частоту синхронизации приложений с таблицами в базе данных. Указанный срок хранения должен быть не меньше максимального периода времени между синхронизациями. Если приложение получает сведения об изменениях через более длительные интервалы, возвращаемые результаты могут оказаться неверными, поскольку часть сведений об изменениях могла уже быть удалена. Чтобы избежать неверных результатов, приложение может использовать системную функцию CHANGE_TRACKING_MIN_VALID_VERSION, чтобы определить, был ли интервал между синхронизациями слишком длительным.
Вы можете использовать AUTO_CLEANUP этот параметр, чтобы включить или отключить задачу очистки, которая удаляет старые сведения об отслеживании изменений. Это может быть полезно, если возникает временная проблема, из-за которой приложения не могут синхронизироваться, и процесс удаления сведений об отслеживании изменений, срок хранения которых истёк, необходимо приостановить до устранения проблемы.
Для любой базы данных, использующей отслеживание изменений, обратите внимание на следующее:
При отслеживании изменений уровень совместимости базы данных должен быть не ниже 90. Если уровень совместимости базы данных менее 90, то можно настроить отслеживание изменений. Однако функция CHANGETABLE, используемая для получения сведений об отслеживании изменений, возвратит ошибку.
Простейший способ обеспечения согласованности всех данных отслеживания изменений — изоляция моментальных снимков. По этой причине мы настоятельно рекомендуем установить для базы данных значение
ONдля изоляции моментальных снимков. Дополнительные сведения см. в статье "Работа с отслеживанием изменений" (SQL Server).
Включение отслеживания изменений для таблицы
Отслеживание изменений должно быть включено для каждой отслеживаемой таблицы. Если отслеживание изменений включено, информация об отслеживании изменений хранится для всех строк в таблице, затронутых DML-операцией.
В следующем примере показано, как включить отслеживание изменений для таблицы с помощью ALTER TABLE.
ALTER TABLE Person.Contact
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)
Включить отслеживание изменений для таблицы можно также в SQL Server Management Studio в диалоговом окне Свойства базы данных (страница "Отслеживание изменений").
TRACK_COLUMNS_UPDATED Если для параметра задано ONзначение, ядро СУБД SQL Server сохраняет дополнительные сведения о том, какие столбцы были обновлены во внутренней таблице отслеживания изменений. Отслеживание столбцов позволяет приложению синхронизировать только те столбцы, которые были обновлены. Это может повысить эффективность и производительность. Тем не менее, так как при сохранении сведений об отслеживании столбцов добавляется дополнительная нагрузка на хранилище, этот параметр по умолчанию устанавливается OFF .
Отключение отслеживания изменений для таблицы или базы данных
Сначала необходимо отключить отслеживание изменений для всех таблиц, в которых оно включено, прежде чем для базы данных можно будет установить отслеживание изменений в значение OFF. Чтобы определить, для каких таблиц было включено отслеживание изменений, воспользуйтесь представлением каталога sys.change_tracking_tables .
В следующем примере показано, как отключить отслеживание изменений для таблицы с помощью ALTER TABLE.
ALTER TABLE Person.Contact
DISABLE CHANGE_TRACKING;
Если ни для одной из таблиц базы данных отслеживание изменений не настроено, то оно может быть отключено и на уровне базы данных. В следующем примере показано, как отключить отслеживание изменений для базы данных с помощью ALTER DATABASE SET параметров.
ALTER DATABASE AdventureWorks2022
SET CHANGE_TRACKING = OFF
Связанный контент
- Свойства базы данных (страница "Отслеживание изменений")
- ALTER DATABASE SET параметры (Transact-SQL)
- Представления каталога отслеживания изменений — sys.change_tracking_databases
- Представления каталога отслеживания изменений — sys.change_tracking_tables
- Отслеживание изменений данных (SQL Server)
- Сведения об отслеживании изменений (SQL Server)
- Работа с измененными данными
- Управление отслеживанием изменений (SQL Server)