Applicazione delle modifiche alla destinazione
Nel flusso di dati di un pacchetto di Integration Services che esegue un caricamento incrementale dei dati delle modifiche la terza e ultima attività consiste nell'applicare le modifiche alla destinazione. Sarà necessario un componente per applicare gli inserimenti, uno per applicare gli aggiornamenti e uno per applicare le eliminazioni.
[!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. Per ulteriori informazioni su questo componente, vedere Elaborazione di inserimenti, aggiornamenti ed eliminazioni. Per una descrizione del processo complessivo per la creazione di un pacchetto che esegue un caricamento incrementale dei dati delle modifiche, vedere Miglioramento dei caricamenti incrementali tramite Change Data Capture.
Per esempi completi end-to-end che illustrano l'utilizzo del processo Change Data Capture nei pacchetti, vedere il pacchetto di esempio di un intervallo di tempo specificato in Change Data Capture e il pacchetto di esempio dall'ultima richiesta in Change Data Capture in Codeplex.
Applicazione di inserimenti
Per applicare inserimenti, è necessario utilizzare una destinazione OLE DB in quanto le nuove righe non richiedono alcuna gestione speciale.
Per elaborare gli inserimenti utilizzando una destinazione OLE DB
Nella scheda Flusso di dati aggiungere una destinazione OLE DB.
Connettere l'output contenente gli inserimenti dalla trasformazione Suddivisione condizionale alla destinazione OLE DB.
Nella pagina Gestione connessione in Editor destinazione OLE DB selezionare le opzioni seguenti:
Selezionare o creare una gestione connessione OLE DB per il database di destinazione.
Selezionare un'opzione per Modalità di accesso ai dati, quindi selezionare la tabella di destinazione o immettere un'istruzione SQL contenente le colonne di destinazione.
Nella pagina Mapping dell'editor eseguire il mapping tra le colonne appropriate dei dati delle modifiche e la tabella di destinazione.
Applicazione di aggiornamenti
Per applicare aggiornamenti, è necessario utilizzare una trasformazione Comando OLE DB. 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.
[!NOTA]
Per applicare gli aggiornamenti, è inoltre possibile utilizzare componenti di destinazione. Quando si sceglie questo approccio, è necessario utilizzare i componenti di destinazione per salvare le righe in tabelle temporanee create allo scopo. È quindi necessario utilizzare attività Esegui SQL per eseguire operazioni di aggiornamento bulk e di eliminazione bulk sulla destinazione dalle tabelle temporanee.
Per elaborare gli aggiornamenti utilizzando una trasformazione Comando OLE DB
Nella scheda Flusso di dati aggiungere una trasformazione Comando OLE DB.
Connettere l'output contenente gli aggiornamenti dalla trasformazione Suddivisione condizionale alla trasformazione Comando OLE DB.
Nella scheda Gestione connessione in Editor avanzato per Comando OLE DB selezionare o creare una gestione connessione OLE DB per il database di destinazione.
Nella scheda Proprietà componente in Editor avanzato per Comando OLE DB immettere un'istruzione UPDATE con parametri per SqlCommand.
Un'istruzione UPDATE per una tabella Customer, ad esempio, potrebbe avere la sintassi seguente:
update CDCSample.Customer set TerritoryID = ?, CustomerType = ?, rowguid = ?, ModifiedDate = ? where CustomerID = ?
Nella scheda Mapping colonne dell'editor eseguire il mapping tra le colonne appropriate dei dati delle modifiche e i parametri nell'istruzione UPDATE.
Applicazione di eliminazioni
Per applicare eliminazioni, è necessario utilizzare una trasformazione Comando OLE DB. 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.
[!NOTA]
Per applicare le eliminazioni, è inoltre possibile utilizzare componenti di destinazione. Quando si sceglie questo approccio, è necessario utilizzare i componenti di destinazione per salvare le righe in tabelle temporanee create allo scopo. È quindi necessario utilizzare attività Esegui SQL per eseguire operazioni di aggiornamento bulk e di eliminazione bulk sulla destinazione dalle tabelle temporanee.
Per elaborare le eliminazioni utilizzando una trasformazione Comando OLE DB
Nella scheda Flusso di dati aggiungere una trasformazione Comando OLE DB al flusso di dati.
Connettere l'output contenente le eliminazioni dalla trasformazione Suddivisione condizionale alla trasformazione Comando OLE DB.
Aprire l'editor avanzato per configurare la trasformazione.
Nella scheda Gestione connessione in Editor avanzato per Comando OLE DB selezionare o creare una gestione connessione OLE DB per il database di destinazione.
Nella scheda Proprietà componente in Editor avanzato per Comando OLE DB immettere un'istruzione DELETE con parametri per SqlCommand.
Un'istruzione DELETE per una tabella Customer, ad esempio, potrebbe avere la sintassi seguente:
delete from Customer where CustomerID = ?
Nella scheda Mapping colonne dell'editor eseguire il mapping tra la colonna appropriata dei dati delle modifiche e il parametro nell'istruzione DELETE.
Ottimizzazione di inserimenti e aggiornamenti tramite la funzionalità MERGE
È 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. Per ulteriori informazioni sulla parola chiave MERGE, vedere 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>. La funzione Change Data Capture ha maggiore efficacia quando non deve eseguire l'elaborazione aggiuntiva necessaria per distinguere gli inserimenti dagli aggiornamenti. 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. Per ulteriori informazioni sulla funzione Transact-SQL utilizzata per recuperare i dati delle modifiche, vedere Recupero e comprensione dei 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 a una tabella temporanea o una tabella di gestione temporanea. 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.
|