Configurazione del componente script nell'editor corrispondenteConfiguring the Script Component in the Script Component Editor

Prima di scrivere codice personalizzato nel componente script, è necessario selezionare il tipo di componente flusso di dati che si vuole creare, ovvero origine, trasformazione o destinazione, quindi configurare i relativi metadati e le relative proprietà nell'Editor trasformazione Script.Before you write custom code in the Script component, you must select the type of data flow component that you want to create—source, transformation, or destination—and then configure the component's metadata and properties in the Script Transformation Editor.

Selezione del tipo di componente da creareSelecting the Type of Component to Create

Quando si aggiunge un componente script nel riquadro Flusso di dati di Progettazione SSISSSIS, viene visualizzata la finestra di dialogo Seleziona tipo componente script.When you add a Script component to the Data Flow pane of SSISSSIS Designer, the Select Script Component Type dialog box appears. Preconfigurare il componente come origine, trasformazione o destinazione.You preconfigure the component as a source, transformation, or destination. Dopo aver eseguito la selezione iniziale, è possibile continuare a configurare il componente nell'Editor trasformazione Script.After you make this initial selection, you can continue to configure the component in the Script Transformation Editor.

Per impostare il linguaggio di scripting predefinito per il componente script, usare l'opzione Linguaggio di scripting nella pagina Generale della finestra di dialogo Opzioni.To set the default script language for the Script component, use the Scripting language option on the General page of the Options dialog box. Per ulteriori informazioni, vedere General Page.For more information, see General Page.

Informazioni sulle due modalità della fase di progettazioneUnderstanding the Two Design-Time Modes

In Progettazione SSISSSIS sono disponibili due modalità per il componente script: progettazione metadati e progettazione codice.In SSISSSIS Designer, the Script component has two modes: metadata design mode and code design mode.

Quando si apre l'Editor trasformazione Script, il componente passa alla modalità di progettazione metadati.When you open the Script Transformation Editor, the component enters metadata design mode. In questa modalità è possibile selezionare colonne di input e aggiungere o configurare output e colonne di output, ma non è possibile scrivere codice.In this mode, you can select input columns, and add or configure outputs and output columns, but you cannot write code. Dopo aver configurato i metadati del componente, è possibile passare in modalità di progettazione codice per scrivere lo script.After you have configured the component's metadata, you can switch to code design mode to write the script.

Quando si passa alla modalità di progettazione codice facendo clic su Modifica script, il componente script blocca i metadati per impedire modifiche aggiuntive, quindi genera automaticamente il codice di base dai metadati dell'input e dell'output.When you switch to code design mode by clicking Edit Script, the Script component locks metadata to prevent additional changes, and then automatically generates base code from the metadata of the inputs and outputs. Quando il codice generato automaticamente è completo, sarà possibile immettere il codice personalizzato.After the autogenerated code is complete, you will be able to enter your custom code. Il codice utilizza le classi di base generate automaticamente per elaborare le righe di input, per accedere a buffer e colonne nei buffer e per recuperare gestioni connessioni e variabili dal pacchetto, tutti come oggetti fortemente tipizzati.Your code uses the auto-generated base classes to process input rows, to access buffers and columns in the buffers, and to retrieve connection managers and variables from the package, all as strongly-typed objects.

Dopo aver immesso il codice personalizzato in modalità di progettazione codice, è possibile tornare in modalità di progettazione metadati.After entering your custom code in code design mode, you can switch back to metadata design mode. In questo modo il codice immesso non viene eliminato. Tuttavia, le successive modifiche ai metadati causano la rigenerazione della classe di base.This does not delete any code that you have entered; however, subsequent changes to the metadata cause the base class to be regenerated. In seguito, la convalida del componente può non riuscire perché è possibile che gli oggetti a cui fa riferimento il codice personalizzato non esistano più o siano stati modificati.Afterward, your component may fail validation because objects referenced by your custom code may no longer exist or may have been modified. In questo caso, è necessario correggere manualmente il codice in modo che possa essere compilato correttamente rispetto alla classe di base rigenerata.In this case, you must fix your code manually so that it can be compiled successfully against the regenerated base class.

Configurazione del componente in modalità di progettazione metadatiConfiguring the Component in Metadata Design Mode

In modalità di progettazione metadati è possibile selezionare colonne di input e aggiungere e configurare output e colonne di output, ma non è possibile scrivere codice.In metadata design mode, you can select input columns, and add and configure outputs and output columns, but you cannot write code. Dopo aver configurato i metadati del componente, passare in modalità di progettazione codice per scrivere lo script.After you have configured the component's metadata, switch to code design mode to write the script.

Le proprietà che è necessario configurare nell'editor personalizzato dipendono dall'utilizzo del componente script.The properties that you must configure in the custom editor depend on the usage of the Script component. Il componente script può essere configurato come origine, trasformazione o destinazione.The Script component can be configured as a source, a transformation, or a destination. A seconda di come viene utilizzato, il componente supporta un input o più output oppure entrambi.Depending on how the component is used, it supports either an input or outputs or both. Il codice personalizzato che verrà scritto elabora le righe e le colonne di input e output.The custom code that you will write processes the input and output rows and columns.

Pagina Colonne di input dell'editor trasformazione ScriptInputs Columns Page of the Script Transformation Editor

La pagina Colonne di input dell'Editor trasformazione Script viene visualizzata per trasformazioni e destinazioni, ma non per le origini.The Input Columns page of the Script Transformation Editor is displayed for transformations and destinations, but not for sources. In questa pagina selezionare le colonne di input che si desidera rendere disponibili per lo script personalizzato, quindi specificare l'accesso di sola lettura o di lettura/scrittura a tali colonne.On this page, you select the available input columns that you want to make available to your custom script, and specify read-only or read/write access to them.

Nel progetto di codice che verrà generato in base a questi metadati, l'elemento di progetto BufferWrapper contiene una classe per ogni input, la quale contiene proprietà delle funzioni di accesso tipizzate per ogni colonna di input selezionata.In the code project that will be generated based on this metadata, the BufferWrapper project item contains a class for each input, and this class contains typed accessor properties for each input column selected. Se ad esempio si seleziona una colonna CustomerID integer e una colonna CustomerName stringa da un input denominato CustomerInput, l'elemento di progetto BufferWrapper conterrà una classe CustomerInput che deriva da ScriptBuffer e la classe CustomerInput esporrà una proprietà integer denominata CustomerID e una proprietà stringa denominata CustomerName.For example, if you select an integer CustomerID column and a string CustomerName column from an input named CustomerInput, the BufferWrapper project item will contain a CustomerInput class that derives from ScriptBuffer, and the CustomerInput class will expose an integer property named CustomerID and a string property named CustomerName. Con questa convenzione è possibile scrivere codice con controllo dei tipi come riportato di seguito:This convention makes it possible to write code with type-checking like the following:

Dim currentCustomerID as Integer = CustomerInput.CustomerID  
Dim currentCustomerName as String = CustomerInput.CustomerName  

Per altre informazioni sulla configurazione di colonne di input per un tipo specifico di componente flusso di dati, vedere l'esempio appropriato in Sviluppo di tipi specifici di componenti script.For more information about how to configure input columns for a specific type of data flow component, see the appropriate example under Developing Specific Types of Script Components.

Pagina Input e output dell'editor trasformazione ScriptInputs and Outputs Page of the Script Transformation Editor

La pagina Input e output dell'Editor trasformazione Script viene visualizzata per origini, trasformazioni e destinazioni.The Input and Outputs page of the Script Transformation Editor is displayed for sources, transformations, and destinations. In questa pagina è possibile aggiungere, rimuovere e configurare input, output e colonne di output che si desidera utilizzare nello script personalizzato, con le limitazioni seguenti:On this page, you add, remove, and configure inputs, outputs, and output columns that you want to use in your custom script, within the following limitations:

  • Se utilizzato come origine, il componente script non include input e supporta più output.When used as a source, the Script component has no input and supports multiple outputs.

  • Se utilizzato come trasformazione, il componente script supporta un input e più output.When used as a transformation, the Script component supports one input and multiple outputs.

  • Se utilizzato come destinazione, il componente script supporta un input e non include output.When used as a destination, the Script component supports one input and has no outputs.

    Nel progetto di codice che verrà generato in base a questi metadati, l'elemento di progetto BufferWrapper contiene una classe per ogni input e output.In the code project that will be generated based on this metadata, the BufferWrapper project item contains a class for each input and output. Se ad esempio si crea un output denominato CustomerOutput, l'elemento di progetto BufferWrapper conterrà una classe CustomerOutput che deriva da ScriptBuffer e la classe CustomerOutput conterrà le proprietà delle funzioni di accesso tipizzate per ogni colonna di output creata.For example, if you create an output named CustomerOutput, the BufferWrapper project item will contain a CustomerOutput class that derives from ScriptBuffer, and the CustomerOutput class will contain typed accessor properties for each output column created.

    È possibile configurare colonne di output solo nella pagina Input e output.You can configure output columns only on the Input and Outputs page. È possibile selezionare colonne di input per trasformazioni e destinazioni nella pagina Colonne di input.You can select input columns for transformations and destinations on the Input Columns page. Le proprietà delle funzioni di accesso tipizzate create nell'elemento di progetto BufferWrapper saranno di sola scrittura per le colonne di output.The typed accessor properties created for you in the BufferWrapper project item will be write-only for output columns. Le proprietà delle funzioni di accesso per le colonne di input saranno di sola lettura o di lettura/scrittura a seconda del tipo di utilizzo selezionato per ogni colonna nella pagina Colonne di input.The accessor properties for input columns will be read-only or read/write depending on the usage type that you have selected for each column on the Input Columns page.

    Per altre informazioni sulla configurazione di input e output per un tipo specifico di componente flusso di dati, vedere l'esempio appropriato in Sviluppo di tipi specifici di componenti script.For more information about configuring inputs and outputs for a specific type of data flow component see the appropriate example under Developing Specific Types of Script Components.

Nota

Anche se non è possibile configurare direttamente un output come output degli errori nel componente script per la gestione automatica delle righe di errore, è possibile riprodurre la funzionalità di un output degli errori creando un output aggiuntivo e utilizzando lo 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 an error output by creating an additional output and using script to direct rows to this output when appropriate. Per altre informazioni, vedere Simulazione di un output degli errori per il componente script.For more information, see Simulating an Error Output for the Script Component.

Proprietà ExclusionGroup e SynchronousInputID degli outputExclusionGroup and SynchronousInputID Properties of Outputs

La proprietà ExclusionGroup ha un valore diverso da zero solo nelle trasformazioni con output sincroni, in cui il codice esegue operazioni di filtro o diramazione e indirizza ogni riga a uno degli output che condividono lo stesso valore di ExclusionGroup diverso da zero.The ExclusionGroup property has a non-zero value only in transformations with synchronous outputs, where your code performs filtering or branching and directs each row to one of the outputs that share the same non-zero ExclusionGroup value. Ad esempio, la trasformazione può indirizzare le righe all'output predefinito o a un output degli errori.For example, the transformation can direct rows either to the default output or to an error output. Quando si creano output aggiuntivi per questo scenario, assicurarsi di impostare il valore della proprietà SynchronousInputID sul numero intero che corrisponde al valore ID dell'input del componente.When you create additional outputs for this scenario, make sure to set the value of the SynchronousInputID property to the integer that matches the ID of the component's input.

La proprietà SynchronousInputID ha un valore diverso da zero solo nelle trasformazioni con output sincrono.The SynchronousInputID property has a non-zero value only in transformations with synchronous outputs. Se il valore di questa proprietà è zero, significa che l'output è asincrono.If the value of this property is zero, it means that the output is asynchronous. Per un output sincrono, in cui le righe vengono passate all'output o agli output selezionati senza l'aggiunta di nuove righe, questa proprietà deve contenere il valore ID dell'input del componente.For a synchronous output, where rows are passed through to the selected output or outputs without adding any new rows, this property should contain the ID of the component's input.

Nota

Quando l'Editor trasformazione Script crea il primo output, la proprietà SynchronousInputID dell'output viene impostata sul valore ID dell'input del componente.When the Script Transformation Editor creates the first output, the editor sets the SynchronousInputID property of the output to the ID of the component's input. Quando l'editor crea gli output successivi, tuttavia, le proprietà SynchronousInputID di questi output vengono impostate su zero.However, when the editor creates subsequent outputs, the editor sets the SynchronousInputID properties of those outputs to zero.

Se si crea un componente con output sincroni, per ogni output è necessario che la proprietà SynchronousInputID sia impostata sul valore ID dell'input del componente.If you are creating a component with synchronous outputs, each output must have its SynchronousInputID property set to the ID of the component’s input. È quindi necessario che il valore SynchronousInputID di ogni output creato dall'editor dopo il primo venga modificato da zero nel valore ID dell'input del componente.Therefore, each output that the editor creates after the first output must have its SynchronousInputID value changed from zero to the ID of the component's input.

Se si crea un componente con output asincroni, per ogni output è necessario che la proprietà SynchronousInputID sia impostata su zero.If you are creating a component with asynchronous outputs, each output must have its SynchronousInputID property set to zero. È quindi necessario che il valore SynchronousInputID del primo output venga modificato in zero dal valore ID dell'input del componente.Therefore, the first output must have its SynchronousInputID value changed from the ID of the component’s input to zero.

Per un esempio di indirizzamento delle righe a uno dei due output sincroni nel componente script, vedere Creazione di una trasformazione sincrona con il componente script.For an example of directing rows to one of two synchronous outputs in the Script component, see Creating a Synchronous Transformation with the Script Component.

Nomi di oggetti nello script generatoObject Names in Generated Script

Il componente script analizza i nomi di input e output, nonché i nomi di colonne negli input e negli output, e in base a tali nomi genera classi e proprietà nell'elemento di progetto BufferWrapper.The Script component parses the names of inputs and outputs, and parse the names of columns in the inputs and outputs, and based on these names generates classes and properties in the BufferWrapper project item. Se i nomi individuati includono caratteri che non appartengono alle categorie Unicode UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter o DecimalDigitLetter, i caratteri non validi vengono eliminati nei nomi generati.If the found names include characters that do not belong to the Unicode categories UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter, or DecimalDigitLetter, the invalid characters are dropped in the generated names. Ad esempio, poiché gli spazi vengono eliminati, due colonne di input denominate FirstName e [First Name] vengono entrambe interpretate come se avessero il nome FirstName, con risultati imprevedibili.For example, spaces are dropped, therefore two input columns that have the names FirstName and [First Name] are both interpreted as having the column name FirstName, with unpredictable results. Per evitare questa situazione, i nomi di input e output e di colonne di input e output utilizzati dal componente script devono contenere solo caratteri delle categorie Unicode elencate in questa sezione.To avoid this situation, the names of inputs and outputs and of input and output columns used by the Script component should contain only characters in the Unicode categories listed in this section.

Pagina Script dell'editor trasformazione ScriptScript Page of the Script Transformation Editor

Nella pagina Script di Editor attività Script è possibile assegnare un nome univoco e una descrizione per l'attività Script.On the Script page of the Script Task Editor, you assign a unique name and a description for the Script task. È anche possibile assegnare valori per le proprietà seguenti.You can also assign values for the following properties.

Nota

In SQL Server 2008 Integration Services (SSIS)SQL Server 2008 Integration Services (SSIS) e versioni successive, tutti gli script sono precompilati.In SQL Server 2008 Integration Services (SSIS)SQL Server 2008 Integration Services (SSIS) and later versions, all scripts are precompiled. Nelle versioni precedenti era possibile specificare se gli script dovessero essere precompilati impostando la proprietà Precompile per l'attività.In previous versions, you specified whether scripts were precompiled by setting a Precompile property for the task.

Proprietà ValidateExternalMetadataValidateExternalMetadata Property

Il valore booleano della proprietà ValidateExternalMetadata specifica se il componente deve eseguire la convalida delle origini dati esterne in fase di progettazione o se deve posticiparla fino alla fase di esecuzione.The Boolean value of the ValidateExternalMetadata property specifies whether the component should perform validation against external data sources at design time, or whether it should postpone validation until run time. Per impostazione predefinita, il valore di questa proprietà è True, ovvero i metadati esterni vengono convalidati sia in fase di progettazione che in fase di esecuzione.By default, the value of this property is True; that is, the external metadata is validated both at design time and at run time. È necessario impostare il valore di questa proprietà su False quando un'origine dati esterna non è disponibile in fase di progettazione, ad esempio se il pacchetto scarica l'origine o crea la destinazione solo in fase di esecuzione.You may want to set the value of this property to False when an external data source is not available at design time: for example, when the package downloads the source or creates the destination only at run time.

Proprietà ReadOnlyVariables e ReadWriteVariablesReadOnlyVariables and ReadWriteVariables Properties

È possibile immettere elenchi delimitati da virgole di variabili esistenti come valori di queste proprietà per rendere le variabili disponibili per l'accesso di sola lettura o di lettura/scrittura all'interno del codice del componente script.You can enter comma-delimited lists of existing variables as the values of these properties to make the variables available for read-only or read/write access within the Script component code. Le variabili sono accessibili nel codice tramite le proprietà ReadOnlyVariables e ReadWriteVariables della classe di base generata automaticamente.Variables are accessed in code through the ReadOnlyVariables and ReadWriteVariables properties of the autogenerated base class. Per altre informazioni, vedere Uso di variabili nel componente script.For more information, see Using Variables in the Script Component.

Nota

Per i nomi delle variabili viene fatta distinzione tra maiuscole e minuscole.Variable names are case-sensitive.

ScriptLanguageScriptLanguage

È possibile selezionare MicrosoftMicrosoft Visual Basic o MicrosoftMicrosoft Visual C# come linguaggio di programmazione per il componente Script.You can select either MicrosoftMicrosoft Visual Basic or MicrosoftMicrosoft Visual C# as the programming language for the Script component.

Pulsante Modifica scriptEdit Script Button

Il pulsante Modifica script consente di aprire l'IDE di MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) in cui scrivere lo script personalizzato.The Edit Script button opens the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE in which you write your custom script. Per altre informazioni, vedere Codifica e debug del componente script.For more information, see Coding and Debugging the Script Component.

Pagina Gestioni connessioni dell'editor trasformazione ScriptConnection Managers Page of the Script Transformation Editor

Nella pagina Gestioni connessioni dell'Editor trasformazione Script è possibile aggiungere e rimuovere le gestioni connessioni che si vogliono usare nello script personalizzato.On the Connection Managers page of the Script Transformation Editor, you add and remove connection managers that you want to use in your custom script. Normalmente, è necessario fare riferimento a gestioni connessioni quando si crea un componente di origine o di destinazione.Normally you need to reference connection managers when you create a source or destination component.

Nel progetto di codice che verrà generato in base a questi metadati, l'elemento di progetto ComponentWrapper contiene una classe di raccolta Connections che include una proprietà di funzione di accesso tipizzata per ogni gestione connessione selezionata.In the code project that will be generated based on this metadata, the ComponentWrapper project item contains a Connections collection class that has a typed accessor property for each selected connection manager. Ogni proprietà di funzione di accesso tipizzata ha lo stesso nome della gestione connessione e restituisce un riferimento alla gestione connessione come istanza di IDTSConnectionManager100.Each typed accessor property has the same name as the connection manager itself and returns a reference to the connection manager as an instance of IDTSConnectionManager100. Ad esempio, se è stata aggiunta una gestione connessione denominata MyADONETConnection nella pagina Gestioni connessioni dell'editor, è possibile ottenere un riferimento alla gestione connessione nello script tramite il codice seguente:For example, if you have added a connection manager named MyADONETConnection on the Connection Managers page of the editor, you can obtain a reference to the connection manager in your script by using the following code:

Dim myADONETConnectionManager As IDTSConnectionManager100 = _  
    Me.Connections.MyADONETConnection  

Per altre informazioni, vedere Connessione a origini dati nel componente script.For more information, see Connecting to Data Sources in the Script Component.

Vedere ancheSee Also

Codifica e debug del componente scriptCoding and Debugging the Script Component