Condividi tramite


Miglioramento dei caricamenti incrementali tramite Change Data Capture

Change Data Capture in SQL Server offre una soluzione efficace alla sfida posta dall'esecuzione di caricamenti incrementali da tabelle di origine in data mart e data warehouse. 

Informazioni su Change Data Capture

Le tabelle di origine vengono modificate nel tempo. Un data mart o un data warehouse basato su tali tabelle deve riflettere le modifiche. Un processo di copia periodica di uno snapshot dell'intera origine, tuttavia, richiede troppo tempo e l'utilizzo di una quantità eccessiva di risorse. Approcci alternativi che includono colonne di tipo timestamp, trigger o query complesse riducono spesso le prestazioni e aumentano la complessità. È necessario un flusso affidabile di dati delle modifiche strutturato in modo che possa essere applicato con facilità dagli utenti alle rappresentazioni di destinazione dei dati. Change Data Capture in SQL Server è in grado di offrire tale soluzione.

La caratteristica Change Data Capture di Motore di database consente di acquisire attività di inserimento, aggiornamento ed eliminazione applicate a tabelle SQL Server e rende disponibili i dettagli relativi alle modifiche in un formato relazionale semplice da utilizzare. Le tabelle delle modifiche utilizzate da Change Data Capture contengono colonne che riflettono la struttura di colonne delle tabelle di origine rilevate, insieme ai metadati necessari per comprendere le modifiche apportate riga per riga.

Nota

Change Data Capture è disponibile solo nelle edizioni Enterprise e Developer e nelle copie di valutazione di SQL Server 2008.

Per ulteriori informazioni:Change Data Capture

Funzionamento di Change Data Capture in Integration Services

Un pacchetto di Integration Services può raccogliere facilmente i dati delle modifiche nei database di SQL Server per eseguire caricamenti incrementali efficaci in un data warehouse. Prima che sia possibile utilizzare Integration Services per caricare i dati delle modifiche, un amministratore deve tuttavia attivare Change Data Capture nel database e nelle tabelle da cui si desidera acquisire le modifiche. Per ulteriori informazioni su come configurare Change Data Capture in un database, vedere Configurazione di Change Data Capture.

Dopo che un amministratore ha attivato Change Data Capture nel database, è possibile creare un pacchetto per l'esecuzione del caricamento incrementale di tali dati. Nel diagramma seguente vengono illustrati i passaggi per la creazione di tale pacchetto che esegue un caricamento incrementale da una singola tabella:

Passaggi di creazione del pacchetto di Change Data Capture

Come illustrato nel diagramma precedente, la creazione di un pacchetto per l'esecuzione di un caricamento incrementale dei dati modificati comporta i passaggi seguenti:

  • Passaggio 1: Progettazione del flusso di controllo
    Nel flusso di controllo del pacchetto è necessario definire le attività seguenti:

    • Calcolare i valori datetime di inizio e di fine per l'intervallo di modifiche apportate all'origine dati che si desidera recuperare.

      Per calcolare tali valori, utilizzare un attività Esegui SQL o espressioni Integration Services con funzioni datetime. È quindi necessario archiviare gli endpoint in variabili del pacchetto da utilizzare in seguito nel pacchetto.

      Per ulteriori informazioni:Definizione di un intervallo di dati delle modifiche

    • Determinare se i dati delle modifiche per l'intervallo selezionato sono pronti. Questo passaggio è necessario in quanto il processo di acquisizione asincrono potrebbe non avere ancora raggiunto l'endpoint selezionato.

      Per determinare se i dati sono pronti, iniziare con un contenitore Ciclo For per rimandare l'esecuzione, se necessario, fino a quando i dati delle modifiche per l'intervallo selezionato non saranno pronti. Nel contenitore Ciclo For utilizzare un'attività Esegui SQL per eseguire una query sulle tabelle di mapping temporale gestite da Change Data Capture. Utilizzare quindi un'attività Script che chiama il metodo Thread.Sleep o un'altra attività Esegui SQL con un'istruzione WAITFOR per rimandare temporaneamente l'esecuzione del pacchetto, se necessario. Facoltativamente, utilizzare un'altra attività Script per registrare una condizione di errore o un timeout.

      Per ulteriori informazioni:Come determinare se i dati delle modifiche sono pronti

    • Preparare la stringa di query che verrà utilizzata per eseguire una query per i dati delle modifiche.

      Utilizzare un'attività Script o un'attività Esegui SQL per assemblare l'istruzione SQL da utilizzare per eseguire una query per le modifiche.

      Per ulteriori informazioni:Preparazione dell'esecuzione di una query per i dati delle modifiche

  • Passaggio 2: Configurazione della query per i dati delle modifiche
    Creare la funzione valutata a livello di tabella che eseguirà una query per i dati.

    Utilizzare SQL Server Management Studio per sviluppare e salvare la query.

    Per ulteriori informazioni:Recupero e comprensione dei dati delle modifiche

  • Passaggio 3: Progettazione del flusso di dati
    Nel flusso di dati del pacchetto è necessario definire le attività seguenti:

    • Recuperare i dati delle modifiche dalle tabelle delle modifiche.

      Per recuperare i dati, utilizzare un componente di origine per eseguire una query sulle tabelle delle modifiche comprese nell'intervallo selezionato. L'origine chiama una funzione Transact-SQL valutata a livello di tabella che deve essere stata creata in precedenza.

      Per ulteriori informazioni:Recupero e comprensione dei dati delle modifiche

    • Suddividere le modifiche in inserimenti, aggiornamenti ed eliminazioni per l'elaborazione.

      Per suddividere le modifiche, utilizzare una trasformazione Suddivisione condizionale per indirizzare inserimenti, aggiornamenti ed eliminazioni a output diversi per l'elaborazione appropriata.

      Per ulteriori informazioni:Elaborazione di inserimenti, aggiornamenti ed eliminazioni

    • Applicare gli inserimenti, le eliminazioni e gli aggiornamenti alla destinazione.

      A tale scopo, utilizzare un componente di destinazione per applicare gli inserimenti alla destinazione. Utilizzare inoltre trasformazioni Comando OLE DB con istruzioni UPDATE e DELETE con parametri per applicare aggiornamenti ed eliminazioni alla destinazione. È inoltre possibile applicare aggiornamenti ed eliminazioni utilizzando componenti di destinazione per salvare le righe in tabelle temporanee. Utilizzare quindi attività Esegui SQL per eseguire operazioni di aggiornamento bulk e di eliminazione bulk sulla destinazione dalle tabelle temporanee.

      Per ulteriori informazioni:Applicazione delle modifiche alla destinazione

Utilizzo dei dati delle modifiche caricati da più tabelle

Il processo illustrato nel diagramma e nei passaggi precedenti prevede un caricamento incrementale da una singola tabella. Il processo per eseguire un caricamento incrementale da più tabelle è identico. È tuttavia necessario modificare la progettazione del pacchetto per adattarlo all'elaborazione di più tabelle. Per ulteriori informazioni su come creare un pacchetto per l'esecuzione di un caricamento incrementale da più tabelle, vedere Esecuzione di un caricamento incrementale di più tabelle.

Visualizzazione di un pacchetto di Change Data Capture completo

In Integration Services sono inclusi due esempi che illustrano come utilizzare la funzionalità Change Data Capture nei pacchetti. Per ulteriori informazioni, vedere gli argomenti seguenti:

Risorse esterne

Intervento nel blog sul carico incrementale con modello di progettazione di SSIS, su sqlblog.com

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN:


Per ricevere notifiche automatiche su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.