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


sys.sp_cdc_add_job (Transact-SQL)

Область применения: SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

[ @job_type = ] N'job_type'

Тип добавляемого задания. @job_type является nvarchar(20) и не может бытьNULL. Допустимые входные данные и capture cleanup.

[ @start_job = ] start_job

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

[ @maxtrans ] = max_trans

Максимальное количество транзакций, обрабатываемое в каждом цикле просмотра. @maxtrans имеет значение по умолчанию500. Указываемое значение должно быть положительным целым числом.

@maxtrans допустимо только для заданий записи.

[ @maxscans ] = max_scans

Максимальное количество циклов просмотра, выполняемых для извлечения всех строк из журнала. @maxscans имеет значение по умолчанию10.

@max_scan допустимо только для заданий записи.

[ @continuous ] = непрерывный

Указывает, выполняется ли задание записи непрерывно (1) или выполняется только один раз (0). @continuous имеет значение по умолчанию1.

  • При @continuous задание sys.sp_cdc_scan 1 сканирует журнал и обрабатывает до (@maxtrans * @maxscans) транзакций. Затем он ожидает количество секунд, указанных в @pollinginterval , прежде чем начать следующую проверку журнала.

  • При @continuous sp_cdc_scan 0задание выполняется до @maxscans сканирования журнала, обработки до @maxtrans транзакции во время каждой проверки, а затем завершает работу.

@continuous допустимо только для заданий записи.

[ @pollinginterval ] = polling_interval

Число секунд между циклами просмотра журнала. @pollinginterval имеет значение bigint со значением по умолчанию5.

@pollinginterval допустимо только для заданий записи, если задано 1значение @continuous. Если задано, значение должно быть больше или равно 0 24 часам (до 86399 секунд). Если задано 0 значение, между проверками журналов не ожидается.

[ @retention ] = хранение

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

@retention допустимо только для заданий очистки.

[ @threshold = ] 'delete_threshold'

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

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

0 (успешно) или 1 (сбой).

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

Нет.

Замечания

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

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

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

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

Разрешения

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

Примеры

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

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

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

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

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

USE AdventureWorks2022;
GO

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