Поделиться через


Об отслеживании изменений (SQL Server)

Отслеживание изменений — это упрощенное решение, которое обеспечивает эффективный механизм отслеживания изменений для приложений. Обычно, чтобы позволить приложениям направлять запросы об изменениях данных в базе данных и получить доступ к сведениям об изменениях, разработчикам приложений приходится реализовывать специальные механизмы отслеживания изменений. Создание этих механизмов обычно требует много работы и часто подразумевает использование сочетания триггеров, столбцов, новых таблиц timestamp для хранения сведений об отслеживании и пользовательских процессов очистки.

У различных типов приложений разные требования к уровню детализации необходимых им сведений об изменениях. Отслеживая изменения, приложения могут отвечать на следующие вопросы об изменениях, сделанных в пользовательской таблице.

  • Какие строки изменены в пользовательской таблице?

    • Требуется только факт изменения строки, но не число изменений строки или значения промежуточных изменений.

    • Можно получить последние данные непосредственно из отслеживаемой таблицы.

  • Изменилась ли строка?

    • Факт изменения строки и сведения об изменении должны быть доступны и записаны при внесении изменения в той же транзакции.

Замечание

Если приложению необходимы данные обо всех произведенных изменениях и все промежуточные значения, следует воспользоваться методом записи данных изменений вместо отслеживания изменений. Дополнительные сведения см. в статье об отслеживании измененных данных (SQL Server).

Приложения односторонней и двусторонней синхронизации

Приложения, которым требуется синхронизировать данные с экземпляром ядра СУБД Microsoft SQL Server, должны иметь возможность направлять запрос об изменениях. Отслеживание изменений может послужить основой для односторонней и двусторонней синхронизации приложений.

Приложения односторонней синхронизации

Приложения односторонней синхронизации, такие как клиентское или приложение кэширования промежуточного уровня, можно построить с использованием отслеживания изменений. Как показано на следующем рисунке, приложению кэширования необходимо хранение данных в модуле базы данных, и чтобы эти данные также были закэшированы в других хранилищах данных. Приложение должно иметь возможность своевременно помещать в кэш любые изменения, внесенные в таблицы базы данных. Нет изменений, которые необходимо передать обратно в ядро СУБД.

Показывает приложения с односторонней синхронизацией

Приложения двусторонней синхронизации

С помощью отслеживания изменений можно также построить и приложения двусторонней синхронизации. В данном случае данные в экземпляре ядра СУБД синхронизируются с одним или несколькими хранилищами данных. Данные в этих хранилищах можно обновлять, и изменения должны быть синхронизированы с ядром СУБД.

Отображает двухстороннюю синхронизацию приложений

Хороший пример приложения двусторонней синхронизации — периодически подключаемое приложение. В приложении такого типа клиентское приложение направляет запрос и обновляет локальное хранилище. Если подключение доступно между клиентом и сервером, приложение синхронизируется с сервером и изменяет потоки данных в обоих направлениях.

Приложения двусторонней синхронизации должны уметь распознавать конфликты. Конфликт возникнет, если одни и те же данные были изменены в обоих хранилищах в период времени между сеансами синхронизации. Благодаря возможности обнаружения конфликтов приложение может убедиться, что изменения не будут потеряны.

Принципы работы отслеживания изменений

Чтобы настроить отслеживание изменений, можно использовать инструкции DDL или SQL Server Management Studio. Дополнительные сведения см. в разделе "Включение и отключение отслеживания изменений" (SQL Server). Чтобы разрешить отслеживание изменений, необходимо включить эту функцию сначала на уровне базы данных, а затем для всех таблиц базы данных, изменения в которых необходимо отслеживать. Определение таблицы не должно быть изменено каким-либо образом, и триггеры не создаются.

После настройки отслеживания изменений для таблицы любая DML-инструкция, затрагивающая строку в таблице, вызовет запись данных отслеживания изменений об измененной строке. При помощи функций отслеживания измененийможно запросить, какие строки были изменены, и получить сведения об этих изменениях.

Значения столбца первичного ключа представляют собой лишь часть сведений из отслеживаемой таблицы, записанной с информацией об изменении. Эти значения идентифицируют измененные строки. Приложение может произвести соединение исходной таблицы с отслеживаемой таблицей по значениям первичного ключевого столбца, чтобы извлечь для этих строк новые значения данных.

Сведения об изменении, внесенном в каждую строку, могут быть получены с помощью отслеживания изменений. Например, тип операции DML, который вызвал изменение (вставку, обновление или удаление), или столбцы, измененные в ходе операции обновления.

См. также

Включение и отключение Отслеживание изменений (SQL Server)
Работа с Отслеживание изменений (SQL Server)
Управление отслеживанием изменений (SQL Server)
Отслеживание изменений данных (SQL Server)