Applicazione delle modifiche alla destinazioneApply the Changes to the Destination

Nel flusso di dati di un pacchetto di Integration ServicesIntegration Services che esegue un caricamento incrementale dei dati delle modifiche la terza e ultima attività consistono nell'applicare le modifiche alla destinazione.In the data flow of an Integration ServicesIntegration Services package that performs an incremental load of change data, the third and final task is to apply the changes to your destination. Sarà necessario un componente per applicare gli inserimenti, uno per applicare gli aggiornamenti e uno per applicare le eliminazioni.You will need one component to apply inserts, one to apply updates, and one to apply deletes.

Nota

La seconda attività nel progettare il flusso di dati di un pacchetto che esegue un caricamento incrementale dei dati delle modifiche consiste nel separare inserimenti, aggiornamenti ed eliminazioni.The second task in designing the data flow of a package that performs an incremental load of change data is to separate inserts, updates, and deletes. Per altre informazioni su questo componente, vedere Elaborare inserimenti, aggiornamenti ed eliminazioni.For more information about this component, see Process Inserts, Updates, and Deletes. Per una descrizione del processo complessivo di creazione di un pacchetto che esegue un caricamento incrementale dei dati delle modifiche, vedere Change Data Capture (SSIS).For a description of the overall process for creating a package that performs an incremental load of change data, see Change Data Capture (SSIS).

Applicazione di inserimentiApplying Inserts

Per applicare inserimenti, è necessario utilizzare una destinazione OLE DB in quanto le nuove righe non richiedono alcuna gestione speciale.To apply inserts, you use an OLE DB destination because the new rows do not require any special handling.

Per elaborare gli inserimenti utilizzando una destinazione OLE DBTo process inserts by using an OLE DB Destination

  1. Nella scheda Flusso di dati aggiungere una destinazione OLE DB.On the Data flow tab, add an OLE DB destination.

  2. Connettere l'output contenente gli inserimenti dalla trasformazione Suddivisione condizionale alla destinazione OLE DB.Connect the output that contains inserts from the Conditional Split transformation to the OLE DB destination.

  3. Nella pagina Gestione connessionein Editor destinazione OLE DB selezionare le opzioni seguenti:In the OLE DB Destination Editor, on the Connection Manager page, select the following options:

    1. Selezionare o creare una gestione connessione OLE DB per il database di destinazione.Select or create an OLE DB Connection Manager for the destination database.

    2. Selezionare un'opzione per Modalità di accesso ai dati e quindi selezionare la tabella di destinazione o immettere un'istruzione SQL contenente le colonne di destinazione.Select a Data access mode option, and then select the destination table or enter a SQL statement that contains the destination columns.

  4. Nella pagina Mapping dell'editor eseguire il mapping tra le colonne appropriate dei dati delle modifiche e la tabella di destinazione.On the Mappings page of the editor, map the appropriate columns from the change data to the destination table.

Applicazione di aggiornamentiApplying Updates

Per applicare aggiornamenti, è necessario utilizzare una trasformazione Comando OLE DB.To apply updates, you use an OLE DB Command transformation. Viene utilizzata questa trasformazione in quanto è necessario utilizzare un'istruzione UPDATE con parametri per aggiornare una riga per volta con i nuovi valori di colonna.You use this transformation because you have to use a parameterized UPDATE statement to update one row at a time with the new column values.

Nota

Per applicare gli aggiornamenti, è inoltre possibile utilizzare componenti di destinazione.You can also use destination components to apply updates. Quando si sceglie questo approccio, è necessario utilizzare i componenti di destinazione per salvare le righe in tabelle temporanee create allo scopo.When using this approach, you use the destination components to save the rows to temporary tables that you create for this purpose. È quindi necessario utilizzare attività Esegui SQL per eseguire operazioni di aggiornamento bulk e di eliminazione bulk sulla destinazione dalle tabelle temporanee.Then, you use Execute SQL tasks to perform bulk update and bulk delete operations against the destination from the temporary tables.

Per elaborare gli aggiornamenti utilizzando una trasformazione Comando OLE DBTo process updates by using an OLE DB Command transformation

  1. Nella scheda Flusso di dati aggiungere una trasformazione Comando OLE DB.On the Data flow tab, add an OLE DB Command transformation.

  2. Connettere l'output contenente gli aggiornamenti dalla trasformazione Suddivisione condizionale alla trasformazione Comando OLE DB.Connect the output that contains updates from the Conditional Split transformation to the OLE DB Command transformation.

  3. Nella scheda Gestione connessionein Editor avanzato per Comando OLE DB selezionare o creare una gestione connessione OLE DB per il database di destinazione.In the Advanced Editor for OLE DB Command, on the Connection Manager tab, select or create an OLE DB Connection Manager for the destination database.

  4. Nella scheda Proprietà componentein Editor avanzato per Comando OLE DB immettere un'istruzione UPDATE con parametri per SqlCommand.In the Advanced Editor for OLE DB Command, on the Component Properties tab, for SqlCommand, enter a parameterized UPDATE statement.

    Un'istruzione UPDATE per una tabella Customer, ad esempio, potrebbe avere la sintassi seguente:For example, an UPDATE statement for a Customer table might have the following syntax:

    update CDCSample.Customer  
    set TerritoryID  = ?,  
        CustomerType  = ?,  
        rowguid  = ?,  
        ModifiedDate  = ?  
    where CustomerID = ?  
    
  5. Nella scheda Mapping colonne dell'editor eseguire il mapping tra le colonne appropriate dei dati delle modifiche e i parametri nell'istruzione UPDATE.On the Column Mappings tab of the editor, map the appropriate columns from the change data to the parameters in the UPDATE statement.

Applicazione di eliminazioniApplying Deletes

Per applicare eliminazioni, è necessario utilizzare una trasformazione Comando OLE DB.To apply deletes, you use an OLE DB Command transformation. Si utilizza questa trasformazione in quanto è necessario utilizzare un'istruzione DELETE con parametri che elimina una sola riga per volta in base al valore di colonna che identifica in modo univoco la riga.You use this transformation because you have to use a parameterized DELETE statement that deletes a single row at a time based on the column value that uniquely identifies the row.

Nota

Per applicare le eliminazioni, è inoltre possibile utilizzare componenti di destinazione.You can also use destination components to apply deletes. Quando si sceglie questo approccio, è necessario utilizzare i componenti di destinazione per salvare le righe in tabelle temporanee create allo scopo.When using this approach, you use the destination components to save the rows to temporary tables that you create for this purpose. È quindi necessario utilizzare attività Esegui SQL per eseguire operazioni di aggiornamento bulk e di eliminazione bulk sulla destinazione dalle tabelle temporanee.Then, you use Execute SQL tasks to perform bulk update and bulk delete operations against the destination from the temporary tables.

Per elaborare le eliminazioni utilizzando una trasformazione Comando OLE DBTo process deletes by using an OLE DB Command transformation

  1. Nella scheda Flusso di dati aggiungere una trasformazione Comando OLE DB al flusso di dati.On the Data flow tab, add an OLE DB Command transformation to the data flow.

  2. Connettere l'output contenente le eliminazioni dalla trasformazione Suddivisione condizionale alla trasformazione Comando OLE DB.Connect the output that contains deletes from the Conditional Split transformation to the OLE DB Command transformation.

  3. Aprire l'editor avanzato per configurare la trasformazione.Open the Advanced Editor to configure the transformation.

  4. Nella scheda Gestione connessionein Editor avanzato per Comando OLE DB selezionare o creare una gestione connessione OLE DB per il database di destinazione.In the Advanced Editor for OLE DB Command, on the Connection Manager tab, select or create an OLE DB Connection Manager for the destination database.

  5. Nella scheda Proprietà componentein Editor avanzato per Comando OLE DB immettere un'istruzione DELETE con parametri per SqlCommand.In the Advanced Editor for OLE DB Command, on the Component Properties tab of the editor, for SqlCommand, enter a parameterized DELETE statement.

    Un'istruzione DELETE per una tabella Customer, ad esempio, potrebbe avere la sintassi seguente:For example, a DELETE statement for a Customer table might have the following syntax:

    delete from Customer where CustomerID = ?  
    
  6. Nella scheda Mapping colonne dell'editor eseguire il mapping tra la colonna appropriata dei dati delle modifiche e il parametro nell'istruzione DELETE.On the Column Mappings tab of the editor, map the appropriate column from the change data to the parameter in the DELETE statement.

Ottimizzazione di inserimenti e aggiornamenti tramite la funzionalità MERGEOptimizing Inserts and Updates by Using MERGE Functionality

È possibile ottimizzare l'elaborazione di inserimenti e aggiornamenti combinando alcune opzioni di Change Data Capture con l'utilizzo della parola chiave MERGE di Transact-SQL.You can optimize the processing of inserts and updates by combining certain change data capture options with the use of the Transact-SQL MERGE keyword. Per ulteriori informazioni sulla parola chiave MERGE, vedere MERGE (Transact-SQL).For more information about the MERGE keyword, see MERGE (Transact-SQL).

Nell'istruzione Transact-SQL che recupera i dati delle modifiche, è possibile specificare all with merge come valore del parametro row_filter_option quando si chiama la funzione cdc.fn_cdc_get_net_changes_<capture_instance>.In the Transact-SQL statement that retrieves the change data, you can specify all with merge as the value of the row_filter_option parameter when you call the cdc.fn_cdc_get_net_changes_<capture_instance> function. La funzione Change Data Capture ha maggiore efficacia quando non deve eseguire l'elaborazione aggiuntiva necessaria per distinguere gli inserimenti dagli aggiornamenti.This change data capture function operates more efficiently when it does not have to perform the extra processing that is required to distinguish inserts from updates. Quando si specifica il valore di parametro all with merge , il valore __$operation dei dati delle modifiche è 1 per le eliminazioni e 5 per le modifiche prodotte da inserimenti o aggiornamenti.When you specify the all with merge parameter value, the __$operation value of the change data is 1 for deletes or 5 for changes that were caused by inserts or updates. Per ulteriori informazioni sulla funzione Transact-SQL usata per recuperare i dati delle modifiche, vedere Recuperare e comprendere i dati delle modifiche. Dopo avere recuperato le modifiche con il valore di parametro all with merge , è possibile applicare le eliminazioni ed eseguire l'output delle righe rimanenti in una tabella temporanea o una tabella di gestione temporanea.For more information about the Transact-SQL function that is used to retrieve the change data, see Retrieve and Understand the Change Data.After retrieving changes with the all with merge parameter value, you can apply deletes, and output the remaining rows to a temporary table or a staging table. In un'attività Esegui SQL a valle è quindi possibile utilizzare una singola istruzione MERGE per applicare tutti gli inserimenti o gli aggiornamenti dalla tabella di gestione temporanea alla destinazione.Then, in a downstream Execute SQL Task, you can use a single MERGE statement to apply all the inserts or updates from the staging table to the destination.