Задание отслеживания

Задание отслеживания инициируется путем запуска хранимой процедуры без параметров sp_MScdc_capture_job. После запуска данная хранимая процедура получает из таблицы msdb.dbo.cdc_jobs значения, заданные для параметров maxtrans, maxscans, continuous и pollinginterval для задания отслеживания. Затем данные настроенные значения передаются в качестве параметров для хранимой процедуры sp_cdc_scan. Используется для вызова процедуры sp_replcmds для выполнения просмотра журнала.

Параметры задания отслеживания

Чтобы понять поведение задания отслеживания, необходимо понять то, как в хранимой процедуре sp_cdc_scan используются настраиваемые параметры.

Параметр maxtrans

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

Параметр maxscans

Параметр maxscans задает максимальное число циклов просмотра, которые предпринимаются для опустошения журнала до возвращения (continuous = 0) или выполнения инструкции waitfor (continuous = 1).

Параметр continous

Параметр continuous управляет тем, отдает ли хранимая процедура sp_cdc_scan управление после опустошения журнала или выполнения максимального числа циклов просмотра (режим одиночного выполнения). Данный параметр также управляет тем, продолжает ли выполняться хранимая процедура sp_cdc_scan после того, как она была явно остановлена (непрерывный режим).

Режим однократного выполнения

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

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

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

(maxtrans * maxscans) / number of seconds between scans

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

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

Непрерывный режим и интервал опроса

В непрерывном режиме задание отслеживания запрашивает непрерывное выполнение процедуры sp_cdc_scan. Это позволяет хранимой процедуре управлять собственным циклом ожидания, предоставляя не только значения параметров maxtrans и maxscans, но также и значение числа секунд, проходящее между обработками журнала (интервал опроса). При выполнении в данном режиме задание отслеживания остается активным; в перерывах между просмотрами журнала выполняется инструкция WAITFOR.

ПримечаниеПримечание

Если значение интервала опроса больше 0, то верхняя граница пропускной способности для повторяющихся заданий в режиме однократного выполнения также будет применяться и к функционированию задания в непрерывном режиме. То есть значение (maxtrans * maxscans), разделенное на ненулевой интервал опроса, будет служить верхней границей для среднего количества транзакций, которое может быть обработано заданием отслеживания.

Настройка задания отслеживания

К заданию отслеживания можно применить дополнительную логику для определения того, будет ли новый просмотр выполняться немедленно или перед запуском нового просмотра будет реализовываться период бездействия, вместо того чтобы полагаться на фиксированный интервал опроса. Выбор может быть основан на времени суток: например, во время пиковой активности можно установить очень большие периоды бездействия, а в конце дня можно установить значение интервала опроса, близкое к 0, что поможет завершить дневную обработку и подготовиться к еженощным выполнениям. Для определения времени просмотра и помещения в таблицы изменений всех транзакций, зафиксированных до полуночи, можно наблюдать за развитием процесса отслеживания. Это позволит заданию отслеживания завершиться для повторного запуска при запланированном ежедневном перезапуске. Заменив шаг вызова хранимой процедуры sp_cdc_scan передаваемого задания на вызов написанной пользователем оболочки для хранимой процедуры sp_cdc_scan, можно с небольшими усилиями обеспечить специальным образом настроенное поведение.

См. также

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