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


sys.sp_cdc_add_job (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии).

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

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

Разрешения

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

Примеры

А.Создание задания отслеживания

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

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

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

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

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

См. также

Справочник

dbo.cdc_jobs (Transact-SQL)

sys.sp_cdc_enable_table (Transact-SQL)

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

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