Condividi tramite


sys.sp_cdc_add_job (Transact-SQL)

Consente di creare un processo di pulizia dell'acquisizione dei dati delle modifiche o un processo di acquisizione nel database corrente.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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' ]

Argomenti

  • [ @job_type= ] 'job_type'
    Tipo di processo da aggiungere. job_type è di tipo nvarchar(20) e non può essere NULL. Gli input validi sono 'capture' e 'cleanup'.

  • [ @start_job= ] start_job
    Flag che indica se il processo deve essere avviato immediatamente dopo essere stato aggiunto. start_job è di tipo bit e il valore predefinito è 1.

  • [ @maxtrans ] = max_trans
    Numero massimo di transazioni da elaborare in ogni ciclo di analisi. max_trans è di tipo int e il valore predefinito è 500. Se specificato, il valore deve essere un numero intero positivo.

    max_trans è valido solo per i processi di acquisizione.

  • [ @maxscans ] **=**max_scans
    Numero massimo di cicli di analisi da eseguire per estrarre tutte le righe dal log. max_scans è di tipo int e il valore predefinito è 10.

    max_scan è valido solo per i processi di acquisizione.

  • [ @continuous ] **=**continuous
    Viene indicato se il processo di acquisizione deve essere eseguito continuamente (1) o solo una volta (0). continuous è di tipo bit e il valore predefinito è 1.

    Quando continuous = 1, il processo sp_cdc_scan analizza il log ed elabora fino a (max_trans * max_scans) transazioni. Attende quindi il numero di secondi specificato in polling_interval prima di iniziare la successiva analisi del log.

    Quando continuous = 0, il processo sp_cdc_scan esegue fino a max_scans analisi del log, elaborando fino a max_trans transazioni durante ogni analisi, quindi viene chiuso.

    continuous è valido solo per i processi di acquisizione.

  • [ @pollinginterval ] **=**polling_interval
    Numero di secondi tra cicli di analisi del log. polling_interval è di tipo bigint e il valore predefinito è 5.

    polling_interval è valido solo per i processi di acquisizione quando continuous è impostato su 1. Se specificato, il valore non può essere negativo e non può superare 24 ore. Se viene specificato il valore 0, non esiste alcun intervallo di attesa tra le analisi del log.

  • [ @retention ] **=**retention
    Numero di minuti per i quali le righe dei dati delle modifiche devono essere conservate nelle tabelle delle modifiche. retention è di tipo bigint e il valore predefinito è 4320 (72 ore). Il valore massimo è 52494800 (100 anni). Se specificato, il valore deve essere un numero intero positivo.

    retention è valido solo per i processi di pulizia.

  • [ @threshold = ] 'delete_threshold'
    Numero massimo di voci che possono essere eliminate utilizzando un'unica istruzione nel processo di pulizia. delete_threshold è di tipo bigint e il valore predefinito è 5000.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Nessuno

Osservazioni

Un processo di pulizia viene creato utilizzando i valori predefiniti quando la prima tabella nel database è abilitata per Change Data Capture. Un processo di acquisizione viene creato utilizzando i valori predefiniti quando la prima tabella nel database è abilitata per Change Data Capture e per il database non esistono pubblicazioni transazionali. Se esiste una pubblicazione transazionale, per attivare il meccanismo di acquisizione viene utilizzato l'agente di lettura del log delle transazioni. Non è quindi necessario né consentito un processo di acquisizione separato.

Poiché i processi di pulizia e di acquisizione vengono creati per impostazione predefinita, questa stored procedure è necessaria solo quando un processo è stato eliminato in modo esplicito e deve essere ricreato.

Il nome del processo è cdc.<database_name>_cleanup o cdc.<database_name>_capture, dove <database_name> è il nome del database corrente. Se esiste già un processo con lo stesso nome, al nome viene aggiunto un punto (.) seguito da un identificatore univoco, ad esempio cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52.

Per visualizzare la configurazione di un processo di pulizia o di acquisizione, utilizzare sp_cdc_help_jobs. Per modificare la configurazione di un processo, utilizzare sp_cdc_change_job.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del database db_owner.

Esempi

A.Creazione di un processo di acquisizione

Nell'esempio seguente viene creato un processo di acquisizione. Questo esempio presuppone che il processo di pulizia esistente sia stato eliminato in modo esplicito e debba essere ricreato. Il processo viene creato utilizzando i valori predefiniti.

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

B.Creazione di un processo di pulizia

Nell'esempio seguente viene creato un processo di pulizia nel database AdventureWorks2012. Il parametro @start\_job è impostato su 0 e @retention è impostato su 5760 minuti (96 ore). Questo esempio presuppone che il processo di pulizia esistente sia stato eliminato in modo esplicito e debba essere ricreato.

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

Vedere anche

Riferimento

dbo.cdc_jobs (Transact-SQL)

sys.sp_cdc_enable_table (Transact-SQL)

Concetti

Informazioni su Change Data Capture (SQL Server)