Condividi tramite


sys.sp_cdc_add_job (Transact-SQL)

Si applica a: SQL Server

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

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @job_type = ] N'job_type'

Tipo di processo da aggiungere. @job_type è 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 l'aggiunta. @start_job è bit con un valore predefinito .1

[ @maxtrans ] = max_trans

Numero massimo di transazioni da elaborare in ogni ciclo di analisi. @maxtrans è int con il valore predefinito 500. Se specificato, il valore deve essere un numero intero positivo.

@maxtrans è 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. @maxscans è int con il valore predefinito 10.

@max_scan è valido solo per i processi di acquisizione.

[ @continuous ] = continuous

Indica se il processo di acquisizione deve essere eseguito in modo continuo (1) o eseguito una sola volta (0). @continuous è bit con un valore predefinito .1

  • Quando @continuous è 1, il processo sys.sp_cdc_scan analizza il log ed elabora fino a (@maxtrans * @maxscans). Attende quindi il numero di secondi specificato in @pollinginterval prima di iniziare l'analisi del log successiva.

  • Quando @continuous è 0, il sp_cdc_scan processo viene eseguito fino a @maxscans analisi del log, l'elaborazione fino a @maxtrans transazione durante ogni analisi e quindi viene chiusa.

@continuous è valido solo per i processi di acquisizione.

[ @pollinginterval ] = polling_interval

Numero di secondi tra cicli di analisi del log. @pollinginterval è bigint con il valore predefinito 5.

@pollinginterval è valido solo per i processi di acquisizione quando @continuous è impostato su 1. Se specificato, il valore deve essere maggiore o uguale a 0 e minore di 24 ore (fino a 86399 secondi). Se si specifica un valore pari 0 a , non c'è attesa tra le analisi del log.

[ @retention ] = conservazione

Numero di minuti per i quali le righe dei dati delle modifiche devono essere conservate nelle tabelle delle modifiche. @retention è bigint con un valore predefinito di 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. @threshold è bigint con il valore predefinito 5000.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

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. Quando esiste una pubblicazione transazionale, il lettore di log transazionale viene usato per guidare il meccanismo di acquisizione e un processo di acquisizione separato non è obbligatorio o consentito.

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, il nome viene aggiunto con un punto (.) seguito da un identificatore univoco, ad esempio : cdc.AdventureWorks_capture.A1ACBDED-13FC-428C-8302-10100EF74F52.

Per visualizzare la configurazione corrente di un processo di pulizia o acquisizione, usare sys.sp_cdc_help_jobs. Per modificare la configurazione di un processo, usare sys.sp_cdc_change_job.

Autorizzazioni

Richiede l'adesione al ruolo predefinito del database db_owner.

Esempi

R. Creare 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 AdventureWorks2022;
GO
EXEC sys.sp_cdc_add_job @job_type = N'capture';
GO

B. Creare un processo di pulizia

Nell'esempio seguente viene creato un processo di pulizia nel database AdventureWorks2022. 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 AdventureWorks2022;
GO

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