sys.sp_cdc_add_job (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sys.sp_cdc_add_job [ @job_type = ] 'job_type'
    [ , [ @start_job = ] start_job ] 
    [ , [ @maxtrans = ] max_trans ] 
        [ , [ @maxscans = ] max_scans ] 
    [ , [ @continuous = ] continuous ] 
        [ , [ @pollinginterval = ] polling_interval ] 
    [ , [ @retention ] = retention ] 
    [ , [ @threshold ] = 'delete_threshold' ]

Аргументы

  • [ @job_type= ] 'job_type'
    Тип добавляемого задания. Аргумент job_type имеет тип nvarchar(20) и не может принимать значение NULL. Допускаются входные значения 'capture' и 'cleanup'.

  • [ @start_job= ] start_job
    Флаг, показывающий, надо ли запускать задание сразу после его добавления. Аргумент start_job имеет тип bit и значение по умолчанию 1.

  • [ @maxtrans ] = max_trans
    Максимальное число транзакций, которые необходимо обработать в каждом цикле просмотра. Аргумент max_trans имеет тип int и значение по умолчанию, равное 500. Указываемое значение должно быть положительным целым числом.

    Аргумент max_trans допустим только для заданий отслеживания.

  • [ @maxscans ] **=**max_scans
    Максимальное число циклов просмотра, выполняемых для извлечения всех строк из журнала. Аргумент max_scans имеет тип int и значение 10 по умолчанию.

    Аргумент max_scan допустим только для заданий отслеживания.

  • [ @continuous ] **=**continuous
    Указывает, следует выполнять задание отслеживания непрерывно (1) или запустить его однократно (0). Аргумент continuous имеет тип bit и значение по умолчанию 1.

    Если аргумент continuous = 1, задание sp_cdc_scan просматривает журнал и обрабатывает до (max_trans * max_scans) транзакций. Перед началом следующего просмотра журнала задание ожидает в течение времени, указанного аргументом polling_interval (в секундах).

    Если аргумент continuous = 0, то задание sp_cdc_scan выполняет до max_scans просмотров журнала, обрабатывая до max_trans транзакций за один просмотр, затем завершает выполнение.

    Аргумент continuous допустим только для заданий записи.

  • [ @pollinginterval ] **=**polling_interval
    Интервал в секундах между циклами просмотра журнала. Аргумент polling_interval имеет тип bigint и значение по умолчанию 5.

    Аргумент polling_interval допустим только для заданий отслеживания, когда аргумент continuous имеет значение 1. Если значение указано, то оно не может быть отрицательным или превышать 24 часа. Если указано значение 0, то пауза между операциями просмотра журналов отсутствует.

  • [ @retention ] **=**retention
    Число минут, в течение которого строки информации об изменениях необходимо хранить в таблицах изменений. Аргумент retention имеет тип bigint со значением по умолчанию 4320 (72 часа). Максимальное значение составляет 52494800 (100 лет). Указываемое значение должно быть положительным целым числом.

    Аргумент retention допустим только для заданий очистки.

  • [ @threshold = ] 'delete_threshold'
    Максимальное число записей, подлежащих удалению, которые можно удалить с использованием одной инструкции при очистке. delete_threshold принадлежит к типу bigint со значением по умолчанию, равным 5000.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Результирующие наборы

Нет

Замечания

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

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

Именем задания является cdc.<имя_базы_данных>_cleanup или cdc.<имя_базы_данных>_capture, где <имя_базы_данных> — имя текущей базы данных. Если задание с таким именем уже существует, имя дополняется точкой (.) и уникальным идентификатором, например: cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52.

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

Разрешения

Требуется членство в предопределенной роли базы данных db_owner.

Примеры

А. Создание задания записи

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

USE AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

Б. Создание задания очистки

В следующем примере создается задание очистки в базе данных AdventureWorks2008R2. Параметр @start_job имеет значение 0, а аргумент @retention — 5 760 минут (96 часов). В этом примере предполагается, что существующее задание очистки было явным образом удалено и его необходимо создать повторно.

USE AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job
     @job_type = N'cleanup'
    ,@start_job = 0
    ,@retention = 5760;