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


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

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

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

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

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

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

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

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

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

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

Приложения, которым требуется синхронизировать данные с экземпляром компонента Компонент SQL Server Database Engine, должны иметь возможность направлять запрос об изменениях. Отслеживание изменений может послужить основой для односторонней и двусторонней синхронизации приложений.

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

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

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

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

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

Показывает применение двусторонней синхронизации

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

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

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

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

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

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

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

См. также

Основные понятия

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

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

Управление отслеживанием изменений (SQL Server)

Отслеживание измененных данных (SQL Server)