Система отслеживания измененных данных и другие функции SQL Server
В данном разделе описывается взаимодействие следующих функций и системы отслеживания измененных данных.
Отслеживание изменений
Отслеживание измененных данных и отслеживание изменений можно активировать на одной и той же базе данных. Никаких особых предосторожностей не требуется. Дополнительные сведения см. в статье Работа с Отслеживание изменений (SQL Server)..
Зеркальное отображение базы данных
Для базы данных, активированной для отслеживания измененных данных, можно установить зеркальное отображение. Чтобы обеспечить автоматическое выполнение отслеживания и очистки после отработки отказа, выполните следующие шаги.
Убедитесь, что запущен агент SQL Server на новом экземпляре основного сервера.
Создайте задание отслеживания и задание очистки в новой основной базе данных (ранее зеркальной базе данных). Создание заданий выполняйте с помощью хранимой процедуры sp_cdc_add_job .
Для просмотра текущей конфигурации задания очистки или отслеживания пользуйтесь хранимой процедурой sys.sp_cdc_help_jobs в новом экземпляре основного сервера. Для данной базы данных задание записи называется cdc. database_name_capture, а задание очистки называется cdc. database_name_cleanup, где database_name — это имя базы данных.
Для изменения конфигурации задания пользуйтесь хранимой процедурой sys.sp_cdc_change_job .
Дополнительные сведения о зеркальных отображениях баз данных см. в разделе Зеркальное отображение базы данных (SQL Server).
репликация транзакций
Система отслеживания измененных данных и репликация транзакций могут сосуществовать в одной базе данных, но если обе эти функции были включены, то заполнение таблиц изменений будет выполняться другим способом. Для считывания изменений из журнала транзакций система отслеживания измененных данных и репликация транзакций всегда используют одну и ту же процедуру sp_replcmds. Если система отслеживания измененных данных включена самостоятельно, задание агент SQL Server вызывает .sp_replcmds
Если обе функции включены в одной базе данных, агент чтения журнала вызывает sp_replcmds
. Агент заполняет как таблицы изменений, так и таблицы базы данных распространителя. Дополнительные сведения см. в статье Replication Log Reader Agent.
Рассмотрим случай, когда для базы данных AdventureWorks2012 была включена система отслеживания измененных данных и две таблицы были включены для отслеживания. Для заполнения таблиц изменений задание отслеживания вызывает процедуру sp_replcmds
. База данных активируется для репликации транзакций, после этого создается публикация. Для базы данных создается агент чтения журнала, задание отслеживания удаляется. Агент чтения журнала продолжает просматривать журнал, начиная с последнего регистрационного номера транзакции, зафиксированного в таблице изменений. Это обеспечивает согласованность данных в таблицах изменений. Если в данной базе данных будет отключена репликация транзакций, то агент чтения журнала будет удален, а задание отслеживания будет создано повторно.
Примечание
Если для системы отслеживания измененных данных и репликации транзакций используется агент чтения журнала, то в базу данных распространителя в первую очередь записываются реплицированные изменения. Затем в таблицы изменений записываются отслеженные изменения. Обе операции фиксируются одновременно. Если при записи в базу данных распространителя возникла задержка, то перед появлением изменений в таблицах изменений пройдет такое же время.
Параметр proc exec репликации транзакций недоступен, когда включена система отслеживания измененных данных.
Восстановление или прикрепление базы данных, активированной для системы отслеживания измененных данных
SQL Server используется следующая логика.
Если база данных восстанавливается на том же сервере с таким же именем базы данных, то система отслеживания измененных данных останется активированной.
Если база данных восстанавливается на другом сервере, то по умолчанию система отслеживания измененных данных будет отключена, а все связанные метаданные будут удалены.
Для сохранения системы отслеживания измененных данных в активированном состоянии при восстановлении базы данных следует использовать параметр
KEEP_CDC
. Дополнительные сведения об этом параметре см. в разделе RESTORE.Если база данных отсоединяется и присоединяется к тому же или другому серверу, то система отслеживания измененных данных остается активированной.
Если база данных подключена или восстановлена с параметром
KEEP_CDC
для любого выпуска, отличного от Enterprise, операция блокируется, так как для отслеживания измененных данных требуется SQL Server Enterprise. Отображается сообщение об ошибке 934.SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.
Процедуру sys.sp_cdc_disable_db можно использовать для отключения отслеживания измененных данных в восстановленной или присоединенной базе данных.
Система отслеживания измененных данных и AlwaysON
При использовании AlwaysON перечисление изменений необходимо выполнять на вторичной реплике для уменьшения загрузки диска на первичной.
См. также:
Администрирование и наблюдение за отслеживанием измененных данных (SQL Server)