Simulazione di un output degli errori per il componente scriptSimulating an Error Output for the Script Component

Anche se non è possibile configurare direttamente un output come output degli errori nel componente script per la gestione automatica delle righe di errori, è possibile riprodurre la funzionalità di un output degli errori incorporato creando un output aggiuntivo e utilizzando la logica condizionale nello script per indirizzare le righe a questo output quando è appropriato.Although you cannot directly configure an output as an error output in the Script component for automatic handling of error rows, you can reproduce the functionality of a built-in error output by creating an additional output and using conditional logic in your script to direct rows to this output when appropriate. È necessario imitare il comportamento di un output degli errori incorporato aggiungendo due colonne di output aggiuntive per ricevere il numero di errore e l'ID della colonna nella quale si è verificato un errore.You may want to imitate the behavior of a built-in error output by adding two additional output columns to receive the error number and the ID of the column in which an error occurred.

Se si desidera aggiungere la descrizione dell'errore che corrisponde a un codice di errore Integration ServicesIntegration Services predefinito specifico, è possibile utilizzare il metodo GetErrorDescription dell'interfaccia IDTSComponentMetaData100, disponibile tramite la proprietà ComponentMetaData del componente script.If you want to add the error description that corresponds to a specific predefined Integration ServicesIntegration Services error code, you can use the GetErrorDescription method of the IDTSComponentMetaData100 interface, available through the Script component's ComponentMetaData property.

EsempioExample

Nell'esempio illustrato di seguito viene utilizzato un componente script configurato come trasformazione che dispone di due output sincroni.The example shown here uses a Script component configured as a transformation that has two synchronous outputs. Lo scopo del componente script è di filtrare le righe di errore dai dati relativi agli indirizzi nel database di esempio AdventureWorks.The purpose of the Script component is to filter error rows from address data in the AdventureWorks sample database. Questo esempio fittizio presuppone che si stia preparando una promozione per i clienti dell'America del nord e che sia necessario filtrare gli indirizzi non relativi all'America del nord.This fictitious example assumes that we are preparing a promotion for North American customers and need to filter out addresses that are not located in North America.

Per configurare l'esempioTo configure the example

  1. Prima di creare il nuovo componente script, creare una gestione connessione e configurare un'origine del flusso di dati che seleziona i dati relativi agli indirizzi dal database di esempio AdventureWorks.Before creating the new Script component, create a connection manager and configure a data flow source that selects address data from the AdventureWorks sample database. Per questo esempio, in cui viene analizzata solo la colonna CountryRegionName, è possibile utilizzare semplicemente la vista Person.vStateCountryProvinceRegion oppure selezionare i dati unendo in join le tabelle Person.Address, Person.StateProvince e Person.CountryRegion.For this example, which only looks at the CountryRegionName column, you can simply use the Person.vStateCountryProvinceRegion view, or you can select data by joining the Person.Address, Person.StateProvince, and Person.CountryRegion tables.

  2. Aggiungere un nuovo componente script all'area di progettazione del flusso di dati e configurarlo come trasformazione.Add a new Script component to the Data Flow designer surface and configure it as a transformation. Aprire il Editor trasformazione Script.Open the Script Transformation Editor.

  3. Nel Script pagina, impostare il ScriptLanguage proprietà per il linguaggio di scripting che si desidera utilizzare per codificare lo script.On the Script page, set the ScriptLanguage property to the script language that you want to use to code the script.

  4. Fare clic su Modifica script per aprire MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA).Click Edit Script to open MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA).

  5. Nel Input0_ProcessInputRow (metodo), digitare o incollare il codice di esempio riportato di seguito.In the Input0_ProcessInputRow method, type or paste the sample code shown below.

  6. Chiudere VSTA.Close VSTA.

  7. Nel colonne di Input pagina, selezionare le colonne che si desidera elaborare nella trasformazione Script.On the Input Columns page, select the columns that you want to process in the Script transformation. In questo esempio viene utilizzata solo la colonna CountryRegionName.This example uses only the CountryRegionName column. Le colonne di input disponibili lasciate deselezionate verranno semplicemente passate nel flusso di dati senza alcuna modifica.Available input columns that you leave unselected will simply be passed through unchanged in the data flow.

  8. Nel input e output pagina, aggiungere un nuovo, secondo output e impostare il relativo SynchronousInputID valore per l'ID di input, che è anche il valore del SynchronousInputID proprietà dell'output predefinito.On the Inputs and Outputs page, add a new, second output, and set its SynchronousInputID value to the ID of the input, which is also the value of the SynchronousInputID property of the default output. Impostare il ExclusionGroup proprietà di entrambi gli output sullo stesso valore diverso da zero (ad esempio, 1) per indicare che ogni riga verrà indirizzata a uno solo dei due output.Set the ExclusionGroup property of both outputs to the same non-zero value (for example, 1) to indicate that each row will be directed to only one of the two outputs. Assegnare al nuovo output degli errori un nome distintivo, ad esempio "MyErrorOutput".Give the new error output a distinctive name, such as "MyErrorOutput."

  9. Aggiungere altre colonne di output al nuovo output degli errori per acquisire le informazioni desiderate sull'errore, tra cui il codice di errore, l'ID della colonna nella quale si è verificato l'errore ed eventualmente la descrizione dell'errore.Add additional output columns to the new error output to capture the desired error information, which may include the error code, the ID of the column in which the error occurred, and possibly the error description. In questo esempio vengono create le nuove colonne, ErrorColumn ed ErrorMessage.This example creates the new columns, ErrorColumn and ErrorMessage. Se si acquisiscono errori di Integration ServicesIntegration Services predefiniti nell'implementazione, assicurarsi di aggiungere una colonna ErrorCode per il numero di errore.If you are catching predefined Integration ServicesIntegration Services errors in your own implementation, make sure to add an ErrorCode column for the error number.

  10. Prendere nota del valore di ID di una o più colonne di input in cui il componente script verificherà le condizioni di errore.Note the ID value of the input column or columns that the Script component will check for error conditions. In questo esempio viene utilizzato questo identificatore di colonna per popolare il valore ErrorColumn.This example uses this column identifier to populate the ErrorColumn value.

  11. Chiudi il Editor trasformazione Script.Close the Script Transformation Editor.

  12. Allegare gli output del componente script alle destinazioni adatte.Attach the outputs of the Script component to suitable destinations. Le destinazioni file flat sono le più semplici da configurare per test ad hoc.Flat file destinations are the easiest to configure for ad hoc testing.

  13. Eseguire il pacchetto.Run the package.

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  

  If Row.CountryRegionName <> "Canada" _  
      And Row.CountryRegionName <> "United States" Then  

    Row.ErrorColumn = 68 ' ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America."  
    Row.DirectRowToMyErrorOutput()  

  Else  

    Row.DirectRowToOutput0()  

  End If  

End Sub  
public override void Input0_ProcessInputRow(Input0Buffer Row)  
{  

  if (Row.CountryRegionName!="Canada"&&Row.CountryRegionName!="United States")  

  {  
    Row.ErrorColumn = 68; // ID of CountryRegionName column  
    Row.ErrorMessage = "Address is not in North America.";  
    Row.DirectRowToMyErrorOutput();  

  }  
  else  
  {  

    Row.DirectRowToOutput0();  

  }  

}  

Vedere ancheSee Also

Gestione degli errori nei dati Error Handling in Data
Utilizzo di output degli errori in un componente del flusso di dati Using Error Outputs in a Data Flow Component
Creazione di una trasformazione sincrona con il componente ScriptCreating a Synchronous Transformation with the Script Component