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


Система отслеживания измененных данных и другие функции SQL Server

В данном разделе описывается взаимодействие следующих функций и системы отслеживания измененных данных.

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

  • Зеркальное отображение базы данных

  • Репликация транзакций

  • Восстановление или прикрепление базы данных, активированной для системы отслеживания измененных данных

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

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

Зеркальное отображение базы данных

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

  1. Убедитесь, что запущен агент SQL Server на новом экземпляре основного сервера.

  2. Создайте задание отслеживания и задание очистки в новой основной базе данных (ранее зеркальной базе данных). Создание заданий выполняйте с помощью хранимой процедуры bb510626(v=sql.110).md.

Для просмотра текущей конфигурации задания очистки или отслеживания пользуйтесь хранимой процедурой sys.sp_cdc_help_jobs на новом экземпляре основного сервера. Для конкретной базы данных задание отслеживания называется cdc.database_name_capture, а задание очистки — cdc.database_name_cleanup, где database_name — имя базы данных.

Для изменения конфигурации задания пользуйтесь хранимой процедурой sys.sp_cdc_change_job.

Дополнительные сведения о зеркальном отображении базы данных см. в разделе Зеркальное отображение базы данных (SQL Server).

Репликация транзакций

Система отслеживания измененных данных и репликация транзакций могут сосуществовать в одной базе данных, но если обе эти функции были включены, то заполнение таблиц изменений будет выполняться другим способом. Для считывания изменений из журнала транзакций система отслеживания измененных данных и репликация транзакций всегда используют одну и ту же процедуру sp_replcmds. Если система отслеживания измененных данных включена отдельно, то процедуру sp_replcmds вызывает задание агента SQL Server. Если в базе данных включены обе эти функции, процедуру sp_replcmds вызывает агент чтения журнала. Агент заполняет как таблицы изменений, так и таблицы базы данных распространителя. Дополнительные сведения см. в разделе Агент чтения журнала репликации.

Рассмотрим случай, когда для базы данных 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 вы можете использовать для отключения отслеживания измененных данных в восстановленной или прикрепленной базе данных.

См. также

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

Администрирование и наблюдение за отслеживанием измененных данных (SQL Server)