Отслеживание изменений

Оценить
(0 голоса)

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

♦ использование триггеров;

♦ применение   средств   перехвата,   отслеживающих   изменения   данных (change data capture, CDC).

Вы можете использовать триггеры для создания контрольного журнала, содержащего сведения о действиях с одной или более таблицами базы данных. В разд. «Триггеры AFTER» в примере 14.1 показано, как могут быть использованы триггеры для отслеживания подобных изменений. По этой причине настоящий раздел фокусируется HaCDC.

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

Перед перехватом действия экземпляр должен быть создан для индивидуальных таблиц; база данных, которая содержит эти таблицы, должна стать доступной для CDC, что можно сделать при помощи системной хранимой процедуры sys. spcdcenabiedb, как показано в примере 12.21. (Только члены фиксированной серверной роли sysadmin могут выполнять эту процедуру.)

Отслеживание изменений

 

Для определения, является ли база данных sample доступной для CDC, вы можете отыскать значение столбца iscdcenabled в представлении просмотра каталога sys. databases. Значение 1 указывает, что средства CDC активированы для конкретной базы данных.

Если база данных доступна для CDC, то схема cdc, пользователь cdc, таблицы метаданных и другие системные объекты будут созданы для базы данных. Схема cdc содержит таблицы метаданных CDC так же, как и индивидуальные таблицы трассировки, которые служат в качестве репозитария для CDC.

Когда база данных стала доступной для CDC, вы можете создавать целевые таблицы, которые будут хранить изменения для отдельной исходной таблицы. Вы делаете таблицу доступной при использовании хранимой процедуры sys. sp_cdc_enable_tabie. (Только члены фиксированной роли базы данных dbowner могут выполнять эту процедуру.) В примере 12.22 показано использование этой системной хранимой процедуры.

 

Отслеживание изменений

 

Системная процедура sys. sp_cdc_enabie_tabie в примере 12.22 делает доступным CDC для указанной исходной таблицы в текущей базе данных. Когда таблица доступна для CDC, все операторы DML читаются из протокола транзакций и помещаются в ассоциированную таблицу изменений. Параметр Ssourceschema задает имя схемы, в которой находится исходная таблица. @source_name является именем исходной таблицы, для которой вы делаете доступным CDC. Параметр @role name задает имя роли базы данных, используемой для предоставления доступа к данным.

При создании экземпляра перехвата также создается таблица отслеживания, которая соответствует исходной таблице. Вы можете указать до двух экземпляров перехвата для одной исходной таблицы. В примере 12.23 выполняется изменение содержимого исходной таблицы (works_on).

 

Отслеживание изменений

 

По умолчанию, по крайней мере, одна функция с табличными значениями создается для доступа к данным в ассоциированной таблице изменений. Эта функция позволяет вам запрашивать все изменения, которые появляются в указанном интервале. Именем этой функции является конкатенация текста cdc.fn_cdc_get_all_changes_ и значения, присвоенного параметру @capture_instance. В этом случае параметр имеет значение dboworkson, как показано в примере 12.24.

 

Отслеживание изменений

 

В примере 12.24 показаны все изменения, которые произошли после выполнения трех операторов insert. Если вы хотите за документировать все изменения в конкретном временном интервале, то можете использовать пакет, аналогичный тому, который представлен в примере 12.25.

 

Отслеживание изменений

Отслеживание изменений

 

Единственным отличием примера 12.25 от примера 12.24 является то, что пример 12.25 использует два параметра (@from_isn и @to_isn) для определения начала и завершения интервала времени. (Назначение границ времени выполняется с помощью функции sys. fn_cdc_map_time_to_lsn ().)


Безопасность данных и представления
Резюме к системе безопасности
Аутентификация
Реализация режима аутентификации
Шифрование данных

Добавить комментарий


Защитный код
Обновить

© 2021 serversql.ru. Все права защищены.