Come determinare se i dati delle modifiche sono prontiDetermine Whether the Change Data Is Ready

Nel flusso di controllo di un pacchetto di Integration ServicesIntegration Services che esegue un caricamento incrementale dei dati delle modifiche, la seconda attività consiste nel verificare che i dati delle modifiche per l'intervallo selezionato siano pronti.In the control flow of an Integration ServicesIntegration Services package that performs an incremental load of change data, the second task is to ensure that the change data for the selected interval is ready. Questo passaggio è necessario in quanto il processo di acquisizione asincrono potrebbe non avere ancora elaborato tutte le modifiche fino all'endpoint selezionato.This step is necessary because the asynchronous capture process might not yet have processed all the changes up to the selected endpoint.

Nota

La prima attività per il flusso di controllo consiste nel calcolare gli endpoint dell'intervallo di modifiche.The first task for the control flow is to calculate the endpoints of the change interval. Per altre informazioni su questa attività, vedere Definizione di un intervallo dei dati delle modifiche.For more information about this task, see Specify an Interval of Change Data. 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).

Informazioni sui componenti della soluzioneUnderstanding the Components of the Solution

La soluzione descritta in questo argomento usa 4 componenti Integration ServicesIntegration Services :The solution described in this topic uses 4 Integration ServicesIntegration Services components:

  • Un contenitore Ciclo For che valuta ripetutamente l'output di un'attività Esegui SQL.A For Loop container that repeatedly evaluates the output of an Execute SQL Task.

  • Un'attività Esegui SQL che esegue una query su tabelle speciali gestite dal processo Change Data Capture e che utilizza quindi tali informazioni per determinare se i dati sono pronti.An Execute SQL task that queries special tables that the change data capture process maintains and then uses this information to determine whether data is ready.

  • Un componente che implementa un ritardo nell'elaborazione quando i dati non sono pronti.A component that implements a delay in processing when the data is not ready. Può trattarsi di un'attività Script o di un'attività Esegui SQL.This can be either a Script task or an Execute SQL task.

  • Facoltativamente, un componente che segnala un errore o un timeout quando l'attività Esegui SQL restituisce un valore indicante un errore o una condizione di timeout.Optionally, a component that reports an error or a timeout when the Execute SQL task returns a value that indicates an error or a timeout condition.

    Tali componenti impostano o leggono i valori di numerose variabili del pacchetto per controllare il flusso di esecuzione all'interno del ciclo e successivamente nel pacchetto.These components set or read the values of several package variables to control the flow of execution inside the loop and later in the package.

Per configurare le variabili del pacchettoTo set up package variables

  1. Nella finestra SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)Variabili di creare le variabili seguenti:In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), in the Variables window, create the following variables:

    1. Creare una variabile con un tipo di dati integer per memorizzare il valore di stato restituito dall'attività Esegui SQL.Create a variable with an integer data type to hold the status value returned by the Execute SQL task.

      In questo esempio viene utilizzato il nome di variabile DataReady con un valore iniziale pari a 0.This example uses the variable name, DataReady, with an initial value of 0.

    2. Creare una variabile per memorizzare il periodo di tempo per il ritardo quando i dati non sono pronti.Create a variable to hold the period of time to delay when data is not ready. Se si prevede di utilizzare un'attività Script per implementare il ritardo, la variabile deve essere associata a un tipo di dati integer.If you plan to use a Script task to implement the delay, the variable should have an integer data type integer. Se si prevede di utilizzare un'attività Esegui SQL con un'istruzione WAITFOR, la variabile deve avere un tipo di dati stringa per accettare valori quali "00.00.10".If you plan to use an Execute SQL task with a WAITFOR statement, the variable should have a string data type to accept values such as "00:00:10".

      In questo esempio viene utilizzato il nome di variabile DelaySeconds con un valore iniziale pari a 10.This example uses the variable name, DelaySeconds, with an initial value of 10.

    3. Creare una variabile con un tipo di dati integer per memorizzare l'iterazione corrente del ciclo.Create a variable with an integer data type to hold the current iteration of the loop.

      In questo esempio viene utilizzato il nome di variabile TimeoutCount con un valore iniziale pari a 0.This example uses the variable name, TimeoutCount, with an initial value of 0.

    4. Creare una variabile con un tipo di dati integer per specificare il numero di volte in cui il ciclo deve eseguire il test dei dati prima di segnalare una condizione di timeout.Create a variable with an integer data type to specify the number of times that the loop should test for data before reporting a timeout condition.

      In questo esempio viene utilizzato il nome di variabile TimeoutCeiling con un valore iniziale pari a 20.This example uses the variable name, TimeoutCeiling, with an initial value of 20.

    5. Creare una variabile con un tipo di dati integer che è possibile utilizzare per indicare il primo caricamento dei dati delle modifiche (facoltativo).(Optional) Create a variable with an integer data type that you can use to indicate the first load of change data.

      In questo esempio viene utilizzato il nome di variabile IntervalID e viene verificata solo l'eventuale presenza di un valore pari a 0 per indicare il caricamento iniziale.This example uses the variable name, IntervalID, and checks only for a value of 0 to indicate the initial load.

Configurazione di un contenitore Ciclo ForConfiguring a For Loop Container

Dopo avere impostato le variabili, il contenitore Ciclo For rappresenta il primo componente da aggiungere.With the variables set, the For Loop container is the first component to be added.

Per configurare un contenitore Ciclo For per attendere che i dati delle modifiche siano prontiTo configure a For Loop container to wait until change data is ready

  1. Nella scheda Flusso di controllo di Progettazione SSISSSIS aggiungere un contenitore Ciclo For al flusso di controllo.On the Control Flow tab of the SSISSSIS Designer, add a For Loop container to the control flow.

  2. Connettere l'attività Esegui SQL per il calcolo degli endpoint dell'intervallo al contenitore Ciclo For.Connect the Execute SQL Task that calculates the endpoints of the interval to the For Loop container.

  3. In Editor ciclo Forselezionare le opzioni seguenti:In the For Loop Editor, select the following options:

    1. Per InitExpression, immettere @DataReady = 0.For InitExpression, enter @DataReady = 0.

      Questa espressione imposta il valore iniziale della variabile del ciclo.This expression sets the initial value of the loop variable.

    2. Per EvalExpression, immettere @DataReady == 0.For EvalExpressionm, enter @DataReady == 0.

      Quando questa espressione restituisce False, l'esecuzione passa all'esterno del ciclo e viene avviato il caricamento incrementale.When this expression evaluates to False, execution passes out of the loop and the incremental load starts.

Configurazione dell'attività Esegui SQL per l'esecuzione di una query per i dati delle modificheConfiguring the Execute SQL Task That Queries for Change Data

È necessario aggiungere un'attività Esegui SQL all'interno del contenitore Ciclo For.Inside the For Loop container, you add an Execute SQL task. Questa attività esegue una query sulle tabelle gestite dal processo Change Data Capture nel database.This task queries the tables that the change data capture process maintains in the database. Il risultato della query è un valore di stato che indica se i dati delle modifiche sono pronti.The result of this query is a status value that indicates whether the change data is ready.

Nella tabella seguente la prima colonna indica i valori restituiti dall'attività Esegui SQL tramite la query Transact-SQL di esempio.In the following table, the first column shows the values returned from the Execute SQL task by the sample Transact-SQL query. La seconda colonna indica il modo in cui gli altri componenti rispondono a tali valori.The second column shows how the other components respond to these values.

Valore restituitoReturn Value SignificatoMeaning RispostaResponse
00 Indica che i dati delle modifiche non sono pronti.Indicates that the change data is not ready.

Non è presente alcun record di Change Data Capture successivo al punto finale dell'intervallo selezionato.There are no change data capture records later than the ending point of the selected interval.
L'esecuzione continua con il componente che implementa un ritardo.Execution continues with the component that implements a delay. Il controllo viene restituito al contenitore Ciclo For, che continua a verificare l'attività Esegui SQL a condizione che il valore restituito sia 0.Then control returns to the For Loop container, which continues to check the Execute SQL task as long as the value returned is 0.
11 Potrebbe indicare che i dati delle modifiche non sono stati acquisiti per l'intervallo completo o che sono stati eliminati.Might indicate that the change data has not been captured for the complete interval, or that it has been deleted. Questo caso viene considerato una condizione di errore.This is treated as an error condition.

Non è presente alcun record di Change Data Capture precedente al punto iniziale dell'intervallo selezionato.There are no change data capture records earlier than the starting point of the selected interval
L'esecuzione continua con il componente facoltativo che registra l'errore.Execution continues with the optional component that logs the error.
22 Indica che i dati sono pronti.Indicates that data is ready.

Non è presente alcun record di Change Data Capture che sia precedente al punto iniziale e successivo al punto finale dell'intervallo selezionato.There are change data capture records that are both earlier than the starting point and later than the ending point of the selected interval.
L'esecuzione passa all'esterno del contenitore Ciclo For e viene avviato il caricamento incrementale.Execution passes out of the For Loop container and the incremental load starts.
33 Indica il caricamento iniziale di tutti i dati delle modifiche disponibili.Indicates the initial load of all available change data.

La logica condizionale ottiene questo valore da una variabile del pacchetto speciale utilizzata solo a questo scopo.The conditional logic obtains this value from a special package variable that is used only for this purpose.
L'esecuzione passa all'esterno del contenitore Ciclo For e viene avviato il caricamento incrementale.Execution passes out of the For Loop container and the incremental load starts.
55 Indica che è stato raggiunto il valore di TimeoutCeiling.Indicates that the TimeoutCeiling has been reached.

Il ciclo ha testato i dati per il numero specificato di volte e i dati non sono ancora disponibili.The loop has tested for data the specified number of times, and data is still not available. Senza questo test o uno simile, l'esecuzione del pacchetto potrebbe continuare per un tempo illimitato.Without this test or a similar test, the package might run indefinitely.
L'esecuzione prosegue con il componente facoltativo che registra il timeout.Execution continues with the optional component that logs the timeout.

Per configurare un'attività Esegui SQL per l'esecuzione di una query per verificare se i dati sono prontiTo configure an Execute SQL task to query whether change data is ready

  1. Aggiungere un'attività Esegui SQL all'interno del contenitore Ciclo For.Inside the For Loop container, add an Execute SQL task.

  2. Nella pagina Generaledi Editor attività Esegui SQL selezionare le opzioni seguenti:In the Execute SQL Task Editor, on the General page, select the following options:

    1. Per ResultSetselezionare 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:

      declare @DataReady int, @TimeoutCount int  
      
      if not exists (select tran_end_time from cdc.lsn_time_mapping  
              where tran_end_time > ?  )  
          select @DataReady = 0  
      else  
          if ? = 0  
              select @DataReady = 3   
      else  
          if not exists (select tran_end_time from cdc.lsn_time_mapping  
                  where tran_end_time <= ? )  
              select @DataReady = 1   
      else  
          select @DataReady = 2  
      
      select @TimeoutCount = ?  
      if (@DataReady = 0)  
          select @TimeoutCount = @TimeoutCount + 1  
      else  
          select @TimeoutCount = 0  
      
      if (@TimeoutCount > ?)  
          select @DataReady = 5  
      
      select @DataReady as DataReady, @TimeoutCount as TimeoutCount  
      
  3. Nella pagina Mapping parametri di Editor attività Esegui SQLcreare i mapping seguenti:On the Parameter Mapping page of the Execute SQL Task Editor, make the following mappings:

    1. Eseguire il mapping tra la variabile ExtractEndTime e il parametro 0.Map the ExtractEndTime variable to parameter 0.

    2. Mapping tra la variabile IntervalID e il parametro 1.Map the IntervalID variable to parameter 1.

    3. Eseguire il mapping tra la variabile ExtractStartTime e il parametro 2.Map the ExtractStartTime variable to parameter 2.

    4. Mapping tra la variabile TimeoutCount e il parametro 3.Map the TimeoutCount variable to parameter 3.

    5. Mapping tra la variabile TimeoutCeiling e il parametro 4.Map the TimeoutCeiling variable to parameter 4.

  4. Nella pagina Set dei risultati di Editor attività Esegui SQLeseguire il mapping tra il risultato di DataReady e la variabile DataReady e tra il risultato di TimeoutCount e la variabile TimeoutCount.On the Result Set page of the Execute SQL Task Editor, map the DataReady result to the DataReady variable, and the TimeoutCount result to the TimeoutCount variable.

Attesa che i dati delle modifiche siano prontiWaiting Until the Change Data Is Ready

È possibile utilizzare uno dei numerosi metodi per implementare un ritardo quando i dati delle modifiche non sono pronti.You can use one of several methods to implement a delay when the change data is not ready. Nelle due procedure seguenti viene illustrato come utilizzare un'attività Script o un'attività Esegui SQL per implementare il ritardo.The following two procedures illustrate how to use a Script task or an Execute SQL task to implement the delay.

Nota

Uno script precompilato è soggetto a un overhead minore rispetto a un'attività Esegui SQL.A precompiled script incurs less overhead than an Execute SQL task.

Per implementare un ritardo tramite un'attività ScriptTo implement a delay by using a Script task

  1. Aggiungere un'attività Script all'interno del contenitore Ciclo For.Inside the For Loop container, add a Script task.

  2. Connettere l'attività Esegui SQL che esegue una query per determinare se i dati delle modifiche sono pronti alla nuova attività Script.Connect the Execute SQL task that queries to determine whether the change data is ready to the new Script task.

  3. Per il vincolo di precedenza che connette l'attività Esegui SQL all'attività Script, aprire Editor vincoli di precedenza e selezionare le opzioni seguenti:For the precedence constraint that connects the Execute SQL task to the Script task, open the Precedence Constraint Editor and select the following options:

    1. Per Operazione valutazione, selezionare Espressione e vincolo.For Evaluation operation, select Expression and Constraint.

    2. Per Valore, selezionare Esito positivo.For Value, select Success.

      Il valore Esito positivo del vincolo si riferisce al risultato dell'attività precedente,The constraint value of Success refers to the success of the previous task. in questo caso l'esito positivo dell'attività Esegui SQL.In this case, the success of the Execute SQL task.

    3. Per Espressione, immettere @DataReady == 0 && @TimeoutCount <= @TimeoutCeiling.For Expression, enter @DataReady == 0 && @TimeoutCount <= @TimeoutCeiling.

    4. Selezionare AND logico. Se questa opzione non è già selezionata, tutti i vincoli devono restituire il valore True.Select Logical AND. All constraints must evaluate to True, if not already selected.

  4. Nella paginaScript di Editor attività Script per ReadOnlyVariables selezionare dall'elenco la variabile di tipo integer User::DelaySeconds.In the Script Task Editor, on the Script page, for ReadOnlyVariables, select the User::DelaySeconds integer variable from the list.

  5. Nella pagina Scriptdi Editor attività Script fare clic su Modifica script per aprire l'ambiente di sviluppo dello script.In the Script Task Editor, on the Script page, click Edit Script to open the script development environment.

  6. Nella routine Main immettere una delle righe di codice seguenti:In the Main procedure, enter one of the following lines of code:

    • Se si utilizza il linguaggio di programmazione C#, immettere la riga di codice seguente:If you are programming in C#, enter the following line of code:

      System.Threading.Thread.Sleep((int)Dts.Variables["DelaySeconds"].Value * 1000);  
      

      - - oppure -- or -

    • Se si utilizza il linguaggio di programmazione Visual BasicVisual Basic, immettere la riga di codice seguente:If you are programming in Visual BasicVisual Basic, enter the following line of code:

      System.Threading.Thread.Sleep(Ctype(Dts.Variables("DelaySeconds").Value, Integer) * 1000)  
      

      Nota

      Come argomento del metodo Thread.Sleep è previsto un argomento specificato in millisecondi.The Thread.Sleep method expects an argument that is specified in milliseconds.

  7. Lasciare la linea di codice predefinita, che restituisce DtsExecResult.Success dall'esecuzione dello script.Leave the default line of code which returns DtsExecResult.Success from the execution of the script.

  8. Chiudere l'ambiente di sviluppo dello script ed Editor attività Script.Close the script development environment and the Script Task Editor.

Per implementare un ritardo tramite un'attività Esegui SQLTo implement a delay by using an Execute SQL task

  1. Aggiungere un'attività Esegui SQL all'interno del contenitore Ciclo For.Inside the For Loop container, add an Execute SQL task.

  2. Connettere l'attività Esegui SQL che esegue una query per determinare se i dati delle modifiche sono pronti alla nuova attività Esegui SQL.Connect the Execute SQL task that queries to determine whether the change data is ready to the new Execute SQL task.

  3. Per il vincolo di precedenza che connette le due attività Esegui SQL, aprire Editor vincoli di precedenza e selezionare le opzioni seguenti:For the precedence constraint that connects the two Execute SQL tasks, open the Precedence Constraint Editor and select the following options:

    1. Per Operazione valutazione, selezionare Espressione e vincolo.For Evaluation operation, select Expression and Constraint.

    2. Per Valore, selezionare Esito positivo.For Value, select Success.

      Il valore Esito positivo del vincolo si riferisce al risultato dell'attività Esegui SQL precedente.The constraint value of Success refers to the success of the previous Execute SQL task.

    3. Per Espressione immettere @DataReady == 0.For Expression, enter @DataReady == 0.

    4. Selezionare AND logico. Se questa opzione non è già selezionata, tutti i vincoli devono restituire il valore True.Select Logical AND. All constraints must evaluate to True, if not already selected.

      Questa opzione richiede che entrambe le condizioni, il vincolo e l'espressione, siano True.This selection requires that both conditions, the constraint and the expression, must be true.

  4. Nella pagina Generaledi Editor attività Esegui SQL selezionare le opzioni seguenti:In the Execute SQL Task Editor, on the General page, select the following options:

    1. Per ResultSetselezionare 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:

      WAITFOR DELAY ?  
      
  5. Nella pagina Mapping parametri dell'editor eseguire il mapping tra la variabile stringa DelaySeconds e il parametro 0.On the Parameter Mapping page of the editor, map the DelaySeconds string variable to parameter 0.

Gestione di una condizione di erroreHandling an Error Condition

Se si desidera, è possibile configurare un componente aggiuntivo nel ciclo per registrare una condizione di errore o di timeout:You can optionally configure an additional component inside the loop to log an error or a timeout condition:

  • Questo componente può registrare una condizione di errore quando il valore della variabile DataReady = 1.This component can log an error condition when the value of the DataReady variable = 1. Questo valore indica che non sono disponibili dati delle modifiche prima dell'inizio dell'intervallo selezionato.This value indicates that there is no available change data before the start of the selected interval.

  • Questo componente può registrare una condizione di timeout anche quando viene raggiunto il valore della variabile TimeoutCeiling.This component can also log a timeout condition when the value of the TimeoutCeiling variable is reached. Questo valore indica che il ciclo ha testato i dati per il numero specificato di volte e i dati non sono ancora disponibili.This value indicates the loop has tested for data the specified number of times, and data is still not available. Senza questo test o uno simile, l'esecuzione del pacchetto potrebbe continuare per un tempo illimitato.Without this test or a similar test, the package might run indefinitely.

Per configurare un'attività Script facoltativa per la registrazione di una condizione di erroreTo configure an optional Script task to log an error condition

  1. Se si desidera segnalare l'errore o il timeout scrivendo un messaggio nel log, configurare la registrazione per il pacchetto.If you want to report the error or timeout by writing a message to the log, configure logging for the package. Per altre informazioni, vedere Abilitare la registrazione di pacchetti in SQL Server Data Tools.For more information, see Enable Package Logging in SQL Server Data Tools.

  2. Aggiungere un'attività Script all'interno del contenitore Ciclo For.Inside the For Loop container, add a Script task.

  3. Connettere l'attività Esegui SQL che esegue una query per determinare se i dati delle modifiche sono pronti alla nuova attività Script.Connect the Execute SQL task that queries to determine whether the change data is ready to the new Script task.

  4. Per il vincolo di precedenza che connette l'attività Esegui SQL all'attività Script, aprire Editor vincoli di precedenza e selezionare le opzioni seguenti:For the precedence constraint that connects the Execute SQL task to the Script task, open the Precedence Constraint Editor and select the following options:

    1. Per Operazione valutazione, selezionare Espressione e vincolo.For Evaluation operation, select Expression and Constraint.

    2. Per Valore, selezionare Esito positivo.For Value, select Success.

      Il valore Esito positivo del vincolo si riferisce al risultato dell'attività precedente,The constraint value of Success refers to the success of the previous task. in questo caso l'esito positivo dell'attività Esegui SQL.In this case, the success of the Execute SQL task.

    3. Per Espressione, immettere @DataReady == 1 || @DataReady == 5.For Expression, enter @DataReady == 1 || @DataReady == 5.

    4. Selezionare AND logico. Se questa opzione non è già selezionata, tutti i vincoli devono restituire il valore True.Select Logical AND. All constraints must evaluate to True, if not already selected.

      Questa opzione richiede che entrambe le condizioni, il vincolo e l'espressione, siano True.This selection requires that both conditions, the constraint and the expression, must be true.

  5. Nella pagina Scriptdi Editor attività Script per ReadOnlyVariablesselezionare User::DataReady e User::ExtractStartTime dall'elenco per rendere i valori disponibili per lo script.In the Script Task Editor, on the Script page of the editor, for ReadOnlyVariables, select User::DataReady and User::ExtractStartTime from the list to make their values available to the script.

    Se si desidera includere informazioni da determinate variabili di sistema, ad esempio System::PackageName, nelle informazioni scritte nel log, selezionare anche tali variabili.If you want to include information from certain system variables (for example, System::PackageName) in the information that you write to the log, select those variables also.

  6. Nella pagina Scriptdi Editor attività Script fare clic su Modifica script per aprire l'ambiente di sviluppo dello script.In the Script Task Editor, on the Script page, click Edit Script to open the script development environment.

  7. Nella routine Main immettere il codice per registrare un errore chiamando il metodo Dts.Log o per generare un evento chiamando uno dei metodi dell'interfaccia Dts.Events .In the Main procedure, enter code to log an error by calling the Dts.Log method, or to raise an event by calling one of the methods of the Dts.Events interface. Informare dell'errore il pacchetto restituendo Dts.TaskResult = Dts.Results.Failure.Inform the package of the error by returning Dts.TaskResult = Dts.Results.Failure.

    Nell'esempio seguente viene illustrato come scrivere un messaggio nel log.The following sample shows how to write a message to the log. Per altre informazioni, vedere Registrazione nell'attività Script, Generazione di eventi nell'attività Scripte Risultati restituiti dall'attività Script.For more information, see Logging in the Script Task, Raising Events in the Script Task, and Returning Results from the Script Task.

    ' User variables.  
    Dim dataReady As Integer = _  
      CType(Dts.Variables("DataReady").Value, Integer)  
    Dim extractStartTime As Date = _  
      CType(Dts.Variables("ExtractStartTime").Value, DateTime)  
    
    ' System variables.  
    Dim packageName As String = _  
      Dts.Variables("PackageName").Value.ToString()  
    Dim executionStartTime As Date = _  
      CType(Dts.Variables("StartTime").Value, DateTime)  
    
    Dim eventMessage As New System.Text.StringBuilder()  
    
    If dataReady = 1 OrElse dataReady = 5 Then  
    
      If dataReady = 1 Then  
        eventMessage.AppendLine("Start Time Error")  
      Else  
        eventMessage.AppendLine("Timeout Error")  
      End If  
    
      With eventMessage  
        .Append("The package ")  
        .Append(packageName)  
        .Append(" started at ")  
        .Append(executionStartTime.ToString())  
        .Append(" and ended at ")  
        .AppendLine(DateTime.Now().ToString())  
        If dataReady = 1 Then  
          .Append("The specified ExtractStartTime was ")  
          .AppendLine(extractStartTime.ToString())  
        End If  
      End With  
    
      System.Windows.Forms.MessageBox.Show(eventMessage.ToString())  
    
      Dts.Log(eventMessage.ToString(), 0, Nothing)  
    
      Dts.TaskResult = Dts.Results.Failure  
    
    Else  
    
      Dts.TaskResult = Dts.Results.Success  
    
    End If  
    
  8. Chiudere l'ambiente di sviluppo dello script ed Editor attività Script.Close the script development environment and the Script Task Editor.

Passaggio successivoNext Step

Dopo avere determinato che i dati delle modifiche sono pronti, il passaggio successivo consiste nel prepararsi a eseguire una query per tali dati delle modifiche.After you determine that change data is ready, the next step is to prepare to query for the change data.

Argomento successivo: Preparazione dell'esecuzione di una query per i dati delle modificheNext topic: Prepare to Query for the Change Data