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 argomentoConvenzioni 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 il valore 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
    Indica 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 i 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 dei codici 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 è attivata per Change Data Capture. Un processo di acquisizione viene creato utilizzando i valori predefiniti quando la prima tabella nel database è attivata 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.<nome_database>_cleanup o cdc.<nome_database>_capture dove <nome_database> è 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 AdventureWorks2008R2;
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 AdventureWorks2008R2. 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 AdventureWorks2008R2;
GO
EXEC sys.sp_cdc_add_job
     @job_type = N'cleanup'
    ,@start_job = 0
    ,@retention = 5760;