Attività di controllo CDCCDC Control Task

L'attività di controllo CDC viene utilizzata per controllare il ciclo di vita di pacchetti Change Data Capture (CDC).The CDC Control task is used to control the life cycle of change data capture (CDC) packages. Questa attività consente di gestire la sincronizzazione del pacchetto CDC con il pacchetto di caricamento iniziale e la gestione di intervalli di numeri di sequenza del file di log (LSN) elaborati in un'esecuzione di un pacchetto CDC.It handles CDC package synchronization with the initial load package, the management of Log Sequence Number (LSN) ranges that are processed in a run of a CDC package. L'attività di controllo CDC, inoltre, consente di gestire gli scenari di errore e il recupero da errori.In addition, the CDC Control task deals with error scenarios and recovery.

L'attività di controllo CDC consente di gestire lo stato del pacchetto CDC in una variabile del pacchetto SSIS e di renderlo persistente in una tabella di database, in modo che lo stato venga mantenuto tra attivazioni del pacchetto e tra più pacchetti che eseguono insieme un processo CDC comune. Un'attività, ad esempio, può essere responsabile del caricamento iniziale e l'altra degli aggiornamenti trickle-feed.The CDC Control task maintains the state of the CDC package in an SSIS package variable and it can also persist it in a database table so that the state is maintained across package activations and between multiple packages that together perform a common CDC process (for example, one task may be responsible for the initial loading and the other for the trickle-feed updates).

L'attività di controllo CDC supporta due gruppi di operazioni.The CDC Control task supports two groups of operations. Mediante un gruppo viene gestita la sincronizzazione del caricamento iniziale e dell'elaborazione delle modifiche; mediante l'altro gruppo viene gestito l'intervallo di elaborazione delle modifiche degli LSN per un'esecuzione di un pacchetto CDC e di tenere traccia degli elementi elaborati correttamente.One group handles the synchronization of initial load and change processing, and the other manages the change-processing range of LSNs for a run of a CDC package and keeps track of what was processed successfully.

Nelle operazioni seguenti viene gestita la sincronizzazione del caricamento iniziale e dell'elaborazione delle modifiche:The following operations handle the synchronization of initial load and change processing:

OperazioneOperation DescriptionDescription
ResetCdcStateResetCdcState Questa operazione viene utilizzata per reimpostare lo stato CDC persistente associato al contesto CDC corrente.This operation is used to reset the persistent CDC state associated with the current CDC context. Dopo l'esecuzione di questa operazione, l'LSN massimo corrente della tabella LSN-timestamp sys.fn_cdc_get_max_lsn diventa l'inizio dell'intervallo di elaborazione successivo.After this operation is run, the current maximum LSN from the LSN-timestamp sys.fn_cdc_get_max_lsn table becomes the start of the range for the next processing range. Per questa operazione è necessaria una connessione al database di origine.This operation requires a connection to the source database.
MarkInitialLoadStartMarkInitialLoadStart Questa operazione viene utilizzata all'inizio di un pacchetto di caricamento iniziale per registrare l'LSN corrente nel database di origine prima che tramite il pacchetto di caricamento iniziale venga avviata la lettura delle tabelle di origine.This operation is used at the beginning of an initial-load package to record the current LSN in the source database before the initial-load package starts reading the source tables. Per questa operazione è necessaria una connessione al database di origine per chiamare sys.fn_cdc_get_max_lsn.This requires a connection to the source database to call sys.fn_cdc_get_max_lsn.

Se si seleziona MarkInitialLoadStart quando si usa CDC di SQL Server 2017SQL Server 2017 , ovvero non di Oracle, l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select MarkInitialLoadStart when working on SQL Server 2017SQL Server 2017 CDC (that is, not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.
MarkInitialLoadEndMarkInitialLoadEnd Questa operazione viene utilizzata alla fine di un pacchetto di caricamento iniziale per registrare l'LSN corrente nel database di origine dopo che il pacchetto di caricamento iniziale completa la lettura delle tabelle di origine.This operation is used at the end of an initial-load package to record the current LSN in the source database after the initial-load package finished reading the source tables. Questo LSN viene determinato registrando la data e l'ora correnti in cui si è verificata l'operazione ed eseguendo quindi una query sulla tabella di mapping cdc.lsn_time_nel database CDC per trovare una modifica successiva alla data e all'ora.This LSN is determined by recording the current time when this operation occurred and then querying the cdc.lsn_time_mapping table in the CDC database looking for a change that occurred after that time.

Se si seleziona MarkInitialLoadEnd quando si usa CDC di SQL Server 2017SQL Server 2017 , ovvero non di Oracle, l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select MarkInitialLoadEnd when working on SQL Server 2017SQL Server 2017 CDC (that is , not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.
MarkCdcStartMarkCdcStart Questa operazione viene utilizzata quando il caricamento iniziale viene eseguito da un database snapshot.This operation is used when then the initial load is made from a snapshot database. In questo caso, l'elaborazione delle modifiche deve iniziare immediatamente dopo l'LSN dello snapshot.In this case, the change processing should start immediately after the snapshot LSN. È possibile specificare il nome del database snapshot da utilizzare e l'attività di controllo CDC esegue una query su SQL Server 2017SQL Server 2017 per trovare l'LSN dello snapshot.You can specify the name of the snapshot database to use and the CDC Control task queries SQL Server 2017SQL Server 2017 for the snapshot LSN. È inoltre possibile scegliere di specificare direttamente l'LSN dello snapshot.You also have the option to directly specify the snapshot LSN.

Se si seleziona MarkCdcStart quando si usa CDC di SQL Server 2017SQL Server 2017 , ovvero non di Oracle, l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select MarkCdcStart when working on SQL Server 2017SQL Server 2017 CDC (that is , not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.

Le operazioni seguenti vengono utilizzate per gestire l'intervallo di elaborazione:The following operations are used to manage the processing range:

OperazioneOperation DescriptionDescription
GetProcessingRangeGetProcessingRange Questa operazione viene utilizzata prima di richiamare il flusso di dati che utilizza il flusso di dati dell'origine CDC.This operation is used before invoking the data flow that uses the CDC Source data flow. L'operazione consente di stabilire un intervallo di LSN letti dal flusso di dati dell'origine CDC quando il flusso di dati viene richiamato.It establishes a range of LSNs that the CDC Source data flow reads when invoked. L'intervallo viene archiviato in una variabile del pacchetto SSIS utilizzata dall'origine CDC durante l'elaborazione del flusso di dati.The range is stored in an SSIS package variable that is used by the CDC Source during data-flow processing.

Per altre informazioni sugli stati che vengono archiviati, vedere Definire una variabile di stato.For more information about the states that are stored, see Define a State Variable.
MarkProcessedRangeMarkProcessedRange Questa operazione avviene dopo ogni esecuzione CDC (una volta completato il flusso di dati CDC) per registrare l'ultimo LSN elaborato completamente nell'esecuzione CDC.: This operation is executed after each CDC run (after the CDC data flow is completed successfully) to record the last LSN that was fully processed in the CDC run. Alla successiva esecuzione di GetProcessingRange, questa posizione corrisponde all'inizio dell'intervallo di elaborazione.The next time GetProcessingRange is executed, this position is the start of the processing range.

Gestione della persistenza dello stato CDCHandling CDC State Persistency

L'attività di controllo CDC consente di gestire uno stato persistente tra attivazioni.The CDC Control task maintains a persistent state between activations. Le informazioni archiviate nello stato CDC vengono utilizzate per determinare e gestire l'intervallo di elaborazione per il pacchetto CDC e per il rilevamento di eventuali condizioni di errore.The information stored in the CDC state is used to determine and maintain the processing range for the CDC package and for detecting error conditions. Lo stato persistente viene archiviato come stringa.The persistent state is stored as a string. Per altre informazioni, vedere Definire una variabile di stato.For more information, see Define a State Variable.

L'attività di controllo CDC supporta due tipi di persistenza dello statoThe CDC Control task supports two types of state persistency

  • Persistenza dello stato manuale: in questo caso, l'attività di controllo CDC gestisce lo stato archiviato in una variabile del pacchetto, ma lo sviluppatore del pacchetto deve leggere la variabile da un archivio persistente prima di chiamare il controllo CDC e quindi riscriverla nell'archivio persistente dopo l'ultima chiamata del controllo CDC e il completamento dell'esecuzione CDC.Manual State Persistency: In this case, the CDC Control task manages the state stored in a package variable but the package developer must read the variable from a persistent store before calling the CDC Control and then write it back to that persistent store after the CDC Control is last called and the CDC run completes.

  • Persistenza dello stato automatica: lo stato CDC viene archiviato in una tabella di un database.Automatic State Persistency: The CDC state is stored in a table in a database. Lo stato viene archiviato con un nome specificato nella proprietà StateName in una tabella denominata nella proprietà Table to Use for Storing State , inclusa in una gestione connessione selezionata per l'archiviazione dello stato.The state is stored under a name provided in the StateName property in a table named in the Table to Use for Storing State property, which is located in a selected connection manager for storing the state. Il valore predefinito è la gestione connessione di origine, ma secondo la pratica comune è consigliabile impostare il valore sulla gestione connessione di destinazione.The default is the source connection manager but the common practice is for it to be the target connection manager. Tramite l'attività di controllo CDC viene aggiornato il valore di stato nella tabella di stato e viene eseguito il commit di tale valore come parte della transazione di ambiente.The CDC Control task updates the state value in the state table and this is committed as part of the ambient transaction.

Gestione degli erroriError Handling

È possibile che l'attività di controllo CDC restituisca un errore nei casi seguenti:The CDC Control task may report an error when:

  • Non è possibile leggere lo stato CDC persistente o l'aggiornamento dello stato persistente non riesce.It fails to read the persistent CDC state or when updating the persistent state fails.

  • Non è possibile leggere le informazioni LSN correnti dal database di origine.It fails to read the current LSN information from the source database.

  • Lo stato CDC letto non è coerente.The CDC state read is not consistent.

    In tutti questi casi, l'attività di controllo CDC restituisce un errore che può essere gestito tramite la modalità standard di gestione degli errori del flusso di controllo in SSIS.In all of these cases, the CDC Control task reports an error that can be handled in the standard way SSIS handles control-flow errors.

    L'attività di controllo CDC può inoltre restituire un avviso quando l'operazione GetProcessingRange viene richiamata direttamente dopo un'altra operazione GetProcessingRange senza che venga chiamata l'operazione MarkProcessedRange.The CDC Control task may also report a warning when the Get Processing Range operation is invoked directly after another Get Processing Range operation without Mark Processed Range being called. Ciò indica che l'esecuzione precedente non è riuscita o che è possibile che un altro pacchetto CDC con lo stesso nome di stato CDC sia in esecuzione.This is an indication that the previous run failed or that another CDC package may be running using the same CDC state name.

Configurazione dell'attività di controllo CDCConfiguring the CDC Control Task

È possibile impostare le proprietà tramite Progettazione SSIS o a livello di codice.You can set properties through SSIS Designer or programmatically.

Contenuto della sezioneIn This Section

Definire una variabile di statoDefine a State Variable

Editor attività Controllo CDCCDC Control Task Editor

Utilizzare la finestra di dialogo CDC Control Task Editor per configurare l'attività di controllo CDC.Use the CDC Control Task Editor dialog box to configure the CDC Control task. La configurazione dell'attività di controllo CDC include la definizione di una connessione al database CDC, l'operazione dell'attività CDC e le informazioni sulla gestione dello stato.The CDC Control task configuration includes defining a connection to the CDC database, the CDC task operation and the state management information.

Per ulteriori informazioni sull'attività di controllo CDC, vedere CDC Control Task.To learn more about the CDC Control task, see CDC Control Task.

Per aprire CDC Control Task EditorTo open the CDC Control Task Editor

  1. In SQL Server Data ToolsSQL Server Data Toolsaprire il pacchetto SQL Server 2017 Integration Services (SSIS)SQL Server 2017 Integration Services (SSIS) contenente l'attività di controllo CDC.In SQL Server Data ToolsSQL Server Data Tools, open the SQL Server 2017 Integration Services (SSIS)SQL Server 2017 Integration Services (SSIS) package that has the CDC Control task.

  2. Nella scheda Flusso di controllo fare doppio clic sull'attività di controllo CDC.On the Control Flow tab, double-click the CDC Control task.

OpzioniOptions

Gestione connessione ADO.NET per database CDC di SQL ServerSQL Server CDC database ADO.NET connection manager
Selezionare una gestione connessione esistente nell'elenco o creare una nuova connessione facendo clic su Nuova .Select an existing connection manager from the list, or click New to create a new connection. La connessione deve essere stabilita a un database di SQL ServerSQL Server abilitato per CDC e in cui si trova la tabella delle modifiche selezionata.The connection must be to a SQL ServerSQL Server database that is enabled for CDC and where the selected change table is located.

Operazione di controllo CDCCDC Control Operation
Selezionare l'operazione da eseguire per questa attività.Select the operation to run for this task. Per tutte le operazioni viene utilizzata la variabile di stato archiviata in una variabile del pacchetto SSIS utilizzata per archiviare lo stato e passarlo tra i diversi componenti nel pacchetto.All operations use the state variable that is stored in an SSIS package variable that stores the state and passes it between the different components in the package.

  • Contrassegna avvio caricamento iniziale: questa operazione viene utilizzata durante l'esecuzione di un caricamento iniziale da un database attivo senza uno snapshot.Mark initial load start: This operation is used when executing an initial load from an active database without a snapshot. Viene richiamata all'inizio di un pacchetto di caricamento iniziale per registrare il valore LSN corrente nel database di origine prima che venga avviata la lettura delle tabelle di origine.It is invoked at the beginning of an initial-load package to record the current LSN in the source database before the initial-load package starts reading the source tables. Questa operazione richiede una connessione al database di origine.This requires a connection to the source database.

    Se si seleziona Contrassegna avvio caricamento iniziale quando si usa CDC di SQL Server 2017SQL Server 2017 (ovvero, non Oracle), l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select Mark Initial Load Start when working on SQL Server 2017SQL Server 2017 CDC (that is, not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.

  • Contrassegna fine caricamento iniziale: questa operazione viene utilizzata durante l'esecuzione di un caricamento iniziale da un database attivo senza uno snapshot.Mark initial load end: This operation is used when executing an initial load from an active database without a snapshot. Viene richiamata alla fine di un pacchetto di caricamento iniziale per registrare l'LSN corrente nel database di origine al termine della lettura delle tabelle di origine.It is invoked at the end of an initial-load package to record the current LSN in the source database after the initial-load package finished reading the source tables. Questo LSN viene determinato registrando l'ora corrente in cui l'operazione si è verificata ed eseguendo quindi una query sulla tabella cdc.lsn_time_mapping nel database CDC per ricercare una modifica successiva a tale oraThis LSN is determined by recording nthe current time when this operation occurred and then querying the cdc.lsn_time_mapping table in the CDC database looking for a change that occurred after that time

    Se si seleziona Contrassegna fine caricamento iniziale quando si usa CDC di SQL Server 2017SQL Server 2017 (ovvero, non Oracle), l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select Mark Initial Load End when working on SQL Server 2017SQL Server 2017 CDC (that is, not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.

  • Contrassegna avvio CDC: questa operazione viene utilizzata quando il caricamento iniziale è costituito da un database snapshot o da un database disattivato.Mark CDC start: This operation is used when then the initial load is made from a snapshot database database or from a quiescence database. Viene richiamata in qualsiasi punto all'interno del pacchetto di caricamento iniziale.It is invoked at any point within the initial load package. L'operazione accetta un parametro che può essere un LSN snapshot, un nome di un database snapshot (da cui l'LSN snapshot viene automaticamente derivato) o può essere lasciato vuoto, nel qual caso l'LSN del database corrente viene utilizzato come LSN iniziale per il pacchetto di elaborazione delle modifiche.The operation accepts a parameter that can be a snapshot LSN, a name of a snapshot database (from which the snapshot LSN will be derived automatically) or it can be left empty, in which case the current database LSN is used as the start LSN for the change processing package.

    Questa operazione viene utilizzata al posto delle operazioni Contrassegna avvio caricamento iniziale/Contrassegna fine caricamento iniziale.This operation is used instead of the Mark Initial Load Start/End operations.

    Se si seleziona Contrassegna avvio CDC quando si usa CDC di SQL Server 2017SQL Server 2017 (ovvero, non Oracle), l'utente specificato nella gestione connessione deve essere db_owner o sysadmin.If you select Mark CDC Start when working on SQL Server 2017SQL Server 2017 CDC (that is, not Oracle) the user specified in the connection manager must be either db_owner or sysadmin.

  • Ottieni intervallo di elaborazione: questa operazione viene utilizzata in un pacchetto di elaborazione delle modifiche prima di richiamare il flusso di dati che utilizza il flusso di dati dell'origine CDC.Get processing range: This operation is used in a change processing package before invoking the data flow that uses the CDC Source data flow. L'operazione consente di stabilire un intervallo di LSN letti dal flusso di dati dell'origine CDC quando il flusso di dati viene richiamato.It establishes a range of LSNs that the CDC Source data flow reads when invoked. L'intervallo viene archiviato in una variabile del pacchetto SSIS utilizzata dall'origine CDC durante l'elaborazione del flusso di dati.The range is stored in an SSIS package variable that is used by the CDC Source during data-flow processing.

    Per altre informazioni sui possibili stati CDC che vengono archiviati, vedere Definire una variabile di stato.For more information about the possible CDC states that are stored, see Define a State Variable.

  • Contrassegna intervallo elaborato: questa operazione viene usata in un pacchetto di elaborazione delle modifiche alla fine di un'esecuzione CDC (dopo il corretto completamento del flusso di dati CDC) per registrare l'ultimo LSN elaborato completamente nell'esecuzione CDC.Mark processed range: This operation is used in a change processing package at the end of a CDC run (after the CDC data flow is completed successfully) to record the last LSN that was fully processed in the CDC run. Alla prossima esecuzione di GetProcessingRange , questa posizione determina l'inizio dell'intervallo di elaborazione successivo.The next time GetProcessingRange is executed, this position determines the start of the next processing range.

  • Reimposta stato CDC: questa operazione viene utilizzata per reimpostare lo stato CDC persistente associato al contesto CDC corrente.Reset CDC state: This operation is used to reset the persistent CDC state associated with the current CDC context. Dopo l'esecuzione di questa operazione, l'LSN massimo corrente della tabella LSN-timestamp sys.fn_cdc_get_max_lsn diventa l'inizio dell'intervallo di elaborazione successivo.After this operation is run, the current maximum LSN from the LSN-timestamp sys.fn_cdc_get_max_lsn table becomes the start of the range for the next processing range. Per questa operazione è necessaria una connessione al database di origine.This operation requires a connection to the source database.

    Questa operazione viene ad esempio utilizzata quando si desidera elaborare solo i record di modifica appena creati e ignorare tutti i record di modifica obsoleti.An example of when this operation is used is when you want to process only the newly created change records and ignore all old change records.

    Variabile contenente lo stato CDCVariable containing the CDC state
    Selezionare la variabile del pacchetto SSIS utilizzata per archiviare le informazioni di stato relative all'operazione dell'attività.Select the SSIS package variable that stores the state information for the task operation. Prima di iniziare, è necessario definire una variabile.You should define a variable before you begin. Se si seleziona AutomaticStatePersistence, la variabile di stato viene caricata e salvata automaticamente.If you select Automatic state persistence, the state variable is loaded and saved automatically.

    Per altre informazioni sulla definizione della variabile di stato, vedere Definire una variabile di stato.For more information about defining the state variable, see Define a State Variable.

    LSN SQL Server per avviare il nome snapshot/CDC:SQL Server LSN to start the CDC/Snapshot name:
    Digitare l'LSN del database di origine corrente o il nome del database snapshot da cui viene eseguito il caricamento iniziale per determinare l'inizio di CDC.Type the current source database LSN or the name of the snapshot database from which the initial load is performed to determine where the CDC starts. Questa opzione è disponibile solo se si imposta Operazione di controllo CDC su Contrassegna avvio CDC.This is available only if the CDC Control Operation is set to Mark CDC Start.

    Per ulteriori informazioni su queste operazioni, vedere CDC Control TaskFor more information about these operations, see CDC Control Task

    Archivia automaticamente lo stato in una tabella di databaseAutomatically store state in a database table
    Selezionare questa casella di controllo se si desidera che tramite l'attività di controllo CDC vengano gestiti automaticamente il caricamento e l'archiviazione dello stato CDC in una tabella di stato contenuta nel database specificato.Select this check box for the CDC Control task to automatically handle loading and storing the CDC state in a state table contained in the specified database. Se la casella di controllo è deselezionata, lo sviluppatore deve caricare lo stato CDC quando il pacchetto viene avviato e salvarlo ogni volta che lo stato CDC cambia.When not selected, the developer must load the CDC State when the package starts and save it whenever the CDC State changes.

    Gestione connessione per il database in cui è archiviato lo statoConnection manager for the database where the state is stored
    Selezionare una gestione connessione ADO.NET esistente dall'elenco o creare una nuova connessione facendo clic su Nuova.Select an existing ADO.NET connection manager from the list, or click New to create a new connection. Questa connessione è a un database di SQL ServerSQL Server che contiene la tabella Stato.This connection is to a SQL ServerSQL Server database that contains the State table. La tabella Stato contiene le informazioni sullo stato.The State table contains the State information.

    È disponibile solo se si seleziona AutomaticStatePersistence ed è un parametro obbligatorio.This is available only if Automatic state persistence is selected and it is a required parameter.

    Tabella da utilizzare per l'archiviazione dello statoTable to use for storing state
    Digitare il nome della tabella di stato da utilizzare per l'archiviazione dello stato CDC.Type the name of the state table to be used for storing the CDC state. La tabella specificata deve disporre di due colonne denominate name e state , entrambe dello stesso tipo di dati varchar (256).The table specified must have two columns called name and state and both columns must be of the data type varchar (256).

    Facoltativamente, è possibile selezionare Nuova per ottenere uno script SQL che compila una nuova tabella Stato con le colonne obbligatorie.You can optionally select New to get an SQL script that builds a new State table with the required columns. Se AutomaticStatePersistence è selezionato, lo sviluppatore deve creare una tabella di stato in base ai requisiti elencati in precedenza.When Automatic state persistence is selected, the developer must create a state table according to the requirements listed above.

    È disponibile solo se si seleziona AutomaticStatePersistence ed è un parametro obbligatorio.This is available only if Automatic state persistence is selected and it is a required parameter.

    Nome dello statoState name
    Digitare un nome da associare allo stato CDC persistente.Type a name to associate with the persistent CDC state. Un nome dello stato comune verrà specificato dal caricamento completo e dai pacchetti CDC che utilizzano lo stesso contesto.The full load and CDC packages that work with the same CDC context will specify a common state name. Questo nome viene utilizzato per cercare la riga di stato nella tabella di statoThis name is used for looking up the state row in the state table