Published on

August 23, 2021

Понимание Change Data Capture в SQL Server

В этом блоге мы рассмотрим концепцию Change Data Capture (CDC) в SQL Server. CDC – это функция, введенная в SQL Server 2008, которая позволяет отслеживать изменения, внесенные в таблицу со временем. В отличие от Change Tracking, который хранит только последнее изменение, внесенное в строку, CDC хранит историю всех изменений, внесенных в таблицу.

Для включения CDC сначала необходимо включить его на уровне базы данных, а затем на уровне таблицы. После включения CDC будет создана таблица изменений, которая хранит изменения, внесенные в отслеживаемую таблицу. Таблица изменений будет содержать записи для каждой операции INSERT, DELETE и UPDATE, показывая значения столбцов до и после изменения.

Включение CDC на уровне базы данных требует, чтобы владелец базы данных был sysadmin. Если при включении CDC возникает ошибка, возможно, вам потребуется изменить владельца базы данных на ‘sa’ или добавить пользователя в роль sysadmin.

Включение CDC на уровне таблицы более сложно, так как оно включает создание системных объектов и имеет зависимости от базы данных MSDB и службы SQL Server Agent. Важно отметить, что если вы удаляете таблицу с включенным CDC, вы потеряете историю изменений.

После включения CDC вы можете запросить таблицу изменений, чтобы получить изменения, внесенные в отслеживаемую таблицу. CDC асинхронно записывает информацию об изменении в журнал транзакций и сохраняет ее с номером последовательности журнала (LSN) транзакции. Таблица изменений содержит все столбцы отслеживаемой таблицы, а не только столбцы первичного ключа.

Введенные в SQL Server 2016 временные таблицы более эффективны в хранении исторических данных, так как они игнорируют операции вставки. CDC, с другой стороны, хранит избыточные данные для каждого изменения. У временных таблиц также есть временное измерение, что позволяет легче получать данные на определенный момент времени по сравнению с CDC.

В заключение, CDC – это мощная функция в SQL Server, которая позволяет отслеживать изменения, внесенные в таблицу со временем. У нее есть свои собственные случаи использования, такие как поддержка медленно изменяющихся измерений и запись изменений в управление мастер-данными (MDM). Однако CDC сложнее в реализации по сравнению с Change Tracking и временными таблицами. В следующем блоге мы рассмотрим временные таблицы и сравним все три функции отслеживания данных в SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.