Definizione di un intervallo dei dati delle modificheSpecify an Interval of Change Data

Nel flusso di controllo di un pacchetto di Integration ServicesIntegration Services che esegue un carico incrementale dei dati delle modifiche, la prima attività consiste nel calcolare gli endpoint dell'intervallo di modifiche.In the control flow of an Integration ServicesIntegration Services package that performs an incremental load of change data, the first task is to calculate the endpoints of the change interval. Tali endpoint sono valori datetime e verranno archiviati in variabili del pacchetto per l'uso successivo nel pacchetto.These endpoints are datetime values and will be stored in package variables for use later in the package.

Nota

Per una descrizione del processo complessivo di progettazione del flusso di controllo, vedere Change Data Capture (SSIS).For a description of the overall process of designing the control flow, see Change Data Capture (SSIS).

Configurare le variabili del pacchetto per gli endpointSet Up Package Variables for the Endpoints

Prima di configurare l'attività Esegui SQL per il calcolo degli endpoint, è necessario definire le variabili del pacchetto in cui verranno archiviati gli endpoint.Before configuring the Execute SQL task to calculate the endpoints, the package variables that will store the endpoints have to be defined.

Per configurare le variabili del pacchettoTo set up package variables

  1. In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)aprire un nuovo progetto di Integration ServicesIntegration Services .In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), open a new Integration ServicesIntegration Services project.

  2. Nella finestra Variabili creare le variabili seguenti:In the Variables window, create the following variables:

    1. Creare una variabile con il tipo di dati datetime per memorizzare il punto iniziale per l'intervallo.Create a variable with the datetime data type to hold the starting point for the interval.

      In questo esempio viene utilizzato il nome di variabile ExtractStartTime.This example uses the variable name, ExtractStartTime.

    2. Creare un'altra variabile con il tipo di dati datetime per memorizzare il punto finale per l'intervallo.Create another variable with the datetime data type to hold the ending point for the interval.

      In questo esempio viene utilizzato il nome di variabile ExtractEndTime.This example uses the variable name, ExtractEndTime.

    Se si calcolano gli endpoint in un pacchetto master che esegue più pacchetti figlio, è possibile utilizzare le configurazioni Variabile pacchetto padre per passare i valori di tali variabili a ciascun pacchetto figlio.If you calculate the endpoints in a master package that executes multiple child packages, you can use Parent Package Variable configurations to pass the values of these variables to each child package. Per altre informazioni, vedere Attività Esegui pacchetto e Utilizzare i valori di variabili e parametri in un pacchetto figlio.For more information, see Execute Package Task and Use the Values of Variables and Parameters in a Child Package.

Calcolare un punto iniziale e un punto finale per i dati delle modificheCalculate a Starting Point and an Ending Point for Change Data

Dopo avere configurato le variabili del pacchetto per gli endpoint dell'intervallo, è possibile calcolare i valori effettivi per tali endpoint ed eseguirne il mapping alle variabili del pacchetto corrispondenti.After you set up the package variables for the interval endpoints, you can calculate the actual values for those endpoints and map those values to the corresponding package variables. Poiché gli endpoint sono valori datetime , sarà necessario usare funzioni in grado di calcolare o usare valori datetime .Because those endpoints are datetime values, you will have to use functions that can calculate or work with datetime values. Sia il linguaggio delle espressioni Integration ServicesIntegration Services sia Transact-SQL includono funzioni che usano valori datetime :Both the Integration ServicesIntegration Services expression language and Transact-SQL have functions that work with datetime values:

Funzioni nel linguaggio delle espressioni Integration ServicesIntegration Services che usano valori datetimeFunctions in the Integration ServicesIntegration Services expression language that work with datetime values

  • DATEDIFF (espressione SSIS)DATEDIFF (SSIS Expression)

  • DATEPART (espressione SSIS)DATEPART (SSIS Expression)

  • DAY (espressione SSIS)DAY (SSIS Expression)

  • GETDATE (espressione SSIS)GETDATE (SSIS Expression)

  • GETUTCDATE (espressione SSIS)GETUTCDATE (SSIS Expression)

  • MONTH (espressione SSIS)MONTH (SSIS Expression)

  • YEAR (espressione SSIS)YEAR (SSIS Expression)

    Funzioni in Transact-SQL che usano valori datetimeFunctions in Transact-SQL that work with datetime values
    Funzioni e tipi di dati di data e ora (Transact-SQL).Date and Time Data Types and Functions (Transact-SQL).

    Prima di usare una di queste funzioni datetime per calcolare gli endpoint, è necessario determinare se l'intervallo è fisso e si verifica regolarmente.Before you use any one of these datetime functions to calculate the endpoints, you have to determine whether the interval is fixed and occurs on a regular schedule. In genere, le modifiche verificatesi nelle tabelle di origine vengono applicate alle tabelle di destinazione a intervalli regolari.Typically, you want to apply changes that have occurred in source tables to destination tables on a regular schedule. Potrebbe essere necessario, ad esempio, applicare le modifiche su base oraria, giornaliera o settimanale.For example, you might want to apply those changes on an hourly, daily, or weekly basis.

    Dopo avere determinato se l'intervallo di modifiche è fisso o più casuale, è possibile calcolare gli endpoint:After you understand whether your change interval is fixed or is more random, you can calculate the endpoints:

  • Calcolo della data e dell'ora di inizio.Calculating the starting date and time. Utilizzare la data e l'ora di fine del caricamento precedente come data e ora di inizio correnti.You use the ending date and time from the previous load as the current starting date and time. Se si usa un intervallo fisso per i caricamenti incrementali, è possibile calcolare questo valore usando le funzioni datetime di Transact-SQL o del linguaggio delle espressioni Integration ServicesIntegration Services .If you use a fixed interval for incremental loads, you can calculate this value by using the datetime functions of Transact-SQL or of the Integration ServicesIntegration Services expression language. In caso contrario, potrebbe essere necessario impostare la persistenza degli endpoint tra le esecuzioni e utilizzare un'attività Esegui SQL o un'attività Script per caricare l'endpoint precedente.Otherwise, you might have to persist the endpoints between executions, and use an Execute SQL task or a Script task to load the previous endpoint.

  • Calcolo della data e dell'ora di fine.Calculating the ending date and time. Se si utilizza un intervallo fisso per i carichi incrementali, calcolare la data e l'ora di fine correnti come offset della data e dell'ora di inizio.If you use a fixed interval for incremental loads, calculate the current ending date and time as an offset from the starting date and time. Anche in questo caso, è possibile calcolare questo valore usando le funzioni datetime di Transact-SQL o del linguaggio delle espressioni Integration ServicesIntegration Services .Again, you can calculate this value by using the datetime functions of Transact-SQL or of the Integration ServicesIntegration Services expression language.

    Nella procedura seguente l'intervallo di modifiche è un intervallo fisso e si presuppone che il pacchetto del caricamento incrementale venga eseguito ogni giorno senza eccezione.In the following procedure, the change interval uses a fixed interval and assumes that the incremental load package is run daily without exception. In caso contrario, i dati delle modifiche per gli intervalli in cui non viene eseguito il caricamento andranno perduti.Otherwise, change data for missed intervals would be lost. Il punto iniziale per l'intervallo è costituito dalla mezzanotte del giorno precedente a ieri, ovvero tra le 24 e le 48 ore precedenti.The starting point for the interval is midnight the day before yesterday, that is, between 24 and 48 hours ago. Il punto finale per l'intervallo è costituito dalla mezzanotte di ieri, ovvero la notte precedente, tra le 0 e le 24 ore precedenti.The ending point for the interval is midnight yesterday, that is, the previous night, between 0 and 24 hours ago.

Per calcolare il punto iniziale e il punto finale per l'intervallo di acquisizioneTo calculate the starting point and ending point for the capture interval

  1. Nella scheda Flusso di controllo di Progettazione SSISSSIS aggiungere un'attività Esegui SQL al pacchetto.On the Control Flow tab of SSISSSIS Designer, add an Execute SQL Task to the package.

  2. Nella pagina Generalein Editor attività Esegui SQL selezionare le opzioni seguenti:Open the Execute SQL Task Editor, and on the General page of the editor, select the following options:

    1. Per ResultSet, selezionare Riga singola.For ResultSet, select Single row.

    2. Configurare una connessione valida al database di origine.Configure a valid connection to the source database.

    3. Per SQLSourceType, selezionare Input diretto.For SQLSourceType, select Direct input.

    4. Per SQLStatement, immettere l'istruzione SQL seguente:For SQLStatement, enter the following SQL statement:

      SELECT DATEADD(dd,0, DATEDIFF(dd,0,GETDATE()-1)) AS ExtractStartTime,  
        DATEADD(dd,0, DATEDIFF(dd,0,GETDATE())) AS ExtractEndTime  
      
  3. Nella pagina Set dei risultati di Editor attività Esegui SQLeseguire il mapping tra il risultato di ExtractStartTime e la variabile del pacchetto ExtractStartTime e tra il risultato di ExtractEndTime e la variabile del pacchetto ExtractEndTime.On the Result Set page of the Execute SQL Task Editor, map the ExtractStartTime result to the ExtractStartTime package variable, and map the ExtractEndTime result to the ExtractEndTime package variable.

    Nota

    Quando si usa un'espressione per impostare il valore di una variabile in Integration ServicesIntegration Services , l'espressione viene valutata ogni volta che si accede al valore della variabile.When you use an expression to set the value of an Integration ServicesIntegration Services variable, the expression is evaluated every time that that the value of the variable is accessed.

Passaggio successivoNext Step

Dopo avere calcolato il punto iniziale e il punto finale per un intervallo di modifiche, il passaggio successivo consiste nel determinare se i dati delle modifiche sono pronti.After you calculate the starting point and ending point for a range of changes, the next step is to determine whether the change data is ready.

Argomento successivo: Come determinare se i dati delle modifiche sono prontiNext topic: Determine Whether the Change Data Is Ready

Vedere ancheSee Also

Utilizzo di variabili nei pacchetti Use Variables in Packages
Integration Services ( SSIS ) Espressioni Integration Services (SSIS) Expressions
Attività Esegui SQL Execute SQL Task
Attività scriptScript Task