Attività Esegui pacchettoExecute Package Task

L'attività Esegui pacchetto permette di estendere le funzionalità aziendali di Integration ServicesIntegration Services consentendo ai pacchetti di eseguire altri pacchetti nell'ambito di un flusso di lavoro.The Execute Package task extends the enterprise capabilities of Integration ServicesIntegration Services by letting packages run other packages as part of a workflow.

È possibile utilizzare l'attività Esegui pacchetto per gli scopi seguenti:You can use the Execute Package task for the following purposes:

  • Suddivisione del flusso di lavoro di pacchetti complessi.Breaking down complex package workflow. Questa attività consente di suddividere il flusso di lavoro in più pacchetti, più semplici da leggere, testare e gestire.This task lets you break down workflow into multiple packages, which are easier to read, test, and maintain. Se ad esempio si caricano dati in uno schema star, sarà possibile compilare un pacchetto a parte per il popolamento delle singole dimensioni e della tabella dei fatti.For example, if you are loading data into a star schema, you can build a separate package to populate each dimension and the fact table.

  • Riutilizzo di parti di pacchetti.Reusing parts of packages. È possibile riutilizzare parti del flusso di lavoro di un pacchetto in altri pacchetti.Other packages can reuse parts of a package workflow. È ad esempio possibile compilare un modulo di estrazione dati che può essere chiamato da pacchetti diversi.For example, you can build a data extraction module that can be called from different packages. Ogni pacchetto che chiama il modulo di estrazione può quindi eseguire operazioni diverse di ripulitura, filtraggio o aggregazione dei dati.Each package that calls the extraction module can perform different data scrubbing, filtering, or aggregation operations.

  • Raggruppamento di unità di lavoro.Grouping work units. Le unità di lavoro possono essere incapsulate in pacchetti separati ed è possibile crearne un join come componenti transazionali al flusso di lavoro di un pacchetto padre.Units of work can be encapsulated into separate packages and joined as transactional components to the workflow of a parent package. Il pacchetto padre esegue ad esempio i pacchetti accessori e, in base all'esito positivo o negativo dell'esecuzione di questi ultimi, esegue il commit o il rollback della transazione.For example, the parent package runs the accessory packages, and based on the success or failure of the accessory packages, the parent package either commits or rolls back the transaction.

  • Controllo della sicurezza dei pacchetti.Controlling package security. Gli autori dei pacchetti hanno l'esigenza di accedere solo a una parte di una soluzione composta da più pacchetti.Package authors require access to only a part of a multipackage solution. Suddividendo un pacchetto in più pacchetti è possibile offrire un livello di sicurezza superiore, perché a ogni autore è possibile concedere l'accesso ai soli pacchetti interessati.By separating a package into multiple packages, you can provide a greater level of security, because you can grant an author access to only the relevant packages.

    Un pacchetto che esegue altri pacchetti è detto in genere pacchetto padre, mentre i pacchetti eseguiti dal flusso di lavoro di un pacchetto padre sono detti pacchetti figlio.A package that runs other packages is generally referred to as the parent package, and the packages that a parent workflow runs are called child packages.

    Integration ServicesIntegration Services include attività per l'esecuzione delle operazioni del flusso di lavoro, ad esempio l'esecuzione di eseguibili e file batch. includes tasks that perform workflow operations, such as executing executables and batch files. Per altre informazioni, vedere Attività Esegui processo.For more information, see Execute Process Task.

Esecuzione di pacchettiRunning Packages

L'attività Esegui pacchetto consente di eseguire i pacchetti figlio contenuti nello stesso progetto in cui è contenuto il pacchetto padre.The Execute Package task can run child packages that are contained in the same project that contains the parent package. Per selezionare un pacchetto figlio dal progetto, impostare la proprietà ReferenceType su Riferimento al progettoe quindi impostare la proprietà PackageNameFromProjectReference .You select a child package from the project by setting the ReferenceType property to Project Reference, and then setting the PackageNameFromProjectReference property.

Nota

L'opzione ReferenceType è di sola lettura e viene impostata su Riferimento esterno se il progetto in cui è contenuto il pacchetto non è stato convertito nel modello di distribuzione del progetto.The ReferenceType option is ready-only and set to External Reference if the project that contains the package has not been converted to the project deployment model. Integration Services (SSIS) di distribuire progetti e pacchetti.Deploy Integration Services (SSIS) Projects and Packages.

L'attività Esegui pacchetto può eseguire sia pacchetti archiviati nel database msdb di SQL ServerSQL Server che pacchetti archiviati nel file system.The Execute Package task can also run packages stored in the SQL ServerSQL Server msdb database and packages stored in the file system. L'attività usa una gestione connessione OLE DB per connettersi a SQL ServerSQL Server o una gestione connessione file per l'accesso al file system.The task uses an OLE DB connection manager to connect to SQL ServerSQL Server or a File connection manager to access the file system. Per altre informazioni, vedere OLE DB Connection Manager e File Connection Manager.For more information, see OLE DB Connection Manager and Flat File Connection Manager.

Poiché l'attività Esegui pacchetto consente anche di eseguire un piano di manutenzione database, è possibile gestire sia pacchetti SSISSSIS che piani di manutenzione database nella stessa soluzione di Integration ServicesIntegration Services .The Execute Package task can also run a database maintenance plan, which lets you manage both SSISSSIS packages and database maintenance plans in the same Integration ServicesIntegration Services solution. Un piano di manutenzione database è simile a un pacchetto di SSISSSIS , ma può includere solo attività di manutenzione del database e viene sempre archiviato nel database msdb.A database maintenance plan is similar to an SSISSSIS package, but a plan can include only database maintenance tasks, and it is always stored in the msdb database.

Se si sceglie un pacchetto archiviato nel file system, sarà necessario specificare il nome e il percorso del pacchetto.If you choose a package stored in the file system, you must provide the name and location of the package. Il pacchetto può risiedere in qualunque posizione del file system e non deve necessariamente trovarsi nella stessa cartella del pacchetto padre.The package can reside anywhere in the file system; it does not have to be in the same folder as the parent package.

Il pacchetto figlio può essere eseguito nel processo del pacchetto padre o in un processo a parte.The child package can be run in the process of the parent package, or it can be run in its own process. L'esecuzione del pacchetto figlio in un processo a parte richiede più memoria, ma offre maggiore flessibilità.Running the child package in its own process requires more memory, but it provides more flexibility. Se ad esempio il processo figlio non riesce, il processo padre potrà continuare l'esecuzione.For example, if the child process fails, the parent process can continue to run.

Talvolta può essere tuttavia necessario che l'esito dei pacchetti padre e figlio venga determinato come per una singola unità oppure si desidera evitare l'overhead di un processo aggiuntivo.Alternatively, sometimes you want the parent and child packages to fail together as one unit, or you might not want to incur the additional overhead of another process. Se ad esempio un processo figlio non riesce e nel processo padre la fase successiva dell'elaborazione dipende dal completamento del processo figlio, è preferibile eseguire il pacchetto figlio nello stesso processo del pacchetto padre.For example, if a child process fails and subsequent processing in the parent process of the package depends on success of the child process, the child package should run in the process of the parent package.

Per impostazione predefinita, la proprietà ExecuteOutOfProcess dell'attività Esegui pacchetto è impostata su Falsee il pacchetto figlio viene eseguito nello stesso processo del pacchetto padre.By default, the ExecuteOutOfProcess property of the Execute Package task is set to False, and the child package runs in the same process as the parent package. Se si imposta questa proprietà su True, il pacchetto figlio viene eseguito in un processo separato.If you set this property to True, the child package runs in a separate process. In questo modo è possibile che l'avvio del pacchetto figlio sia rallentato.This may slow down the launching of the child package. Inoltre, se si imposta la proprietà su True, non è possibile eseguire il debug del pacchetto in un'installazione di soli strumenti.In addition, if you set the property to True, you cannot debug the package in a tools-only install. È necessario installare Integration ServicesIntegration Services.You must install Integration ServicesIntegration Services. Per altre informazioni, vedere Installazione di Integration Services.For more information, see Install Integration Services

Estensione delle transazioniExtending Transactions

Poiché la transazione utilizzata dal pacchetto padre può essere estesa al pacchetto figlio, è possibile eseguire in un'unica operazione il commit o il rollback di tutte le operazioni eseguite dai due pacchetti.The transaction that the parent package uses can extend to the child package; therefore, the work both packages perform can be committed or rolled back. È ad esempio possibile eseguire il commit o il rollback degli inserimenti nel database eseguiti dal pacchetto padre a seconda dell'esito degli inserimenti nel database eseguiti dal pacchetto figlio e viceversa.For example, the database inserts that the parent package performs can be committed or rolled back, depending on the database inserts that the child package performs, and vice versa. Per altre informazioni, vedere Transazioni ereditate.For more information, see Inherited Transactions.

Propagazione dei dettagli di registrazionePropagating Logging Details

Il pacchetto figlio eseguito dall'attività Esegui pacchetto invia sempre i dettagli di registrazione al pacchetto padre, anche se non è configurato per l'utilizzo della registrazione.The child package that the Execute Package task runs may or may not be configured to use logging, but the child package will always forward the log details to the parent package. I dettagli ricevuti dal pacchetto figlio verranno tuttavia registrati solo se l'attività Esegui pacchetto è configurata per l'utilizzo della registrazione.If the Execute Package task is configured to use logging, the task logs the log details from the child package. Per altre informazioni, vedere Registrazione di Integration Services (SSIS).For more information, see Integration Services (SSIS) Logging.

Passaggio di valori ai pacchetti figlioPassing Values to Child Packages

I pacchetti figlio utilizzano in genere valori ricevuti dal pacchetto chiamante, che normalmente è il pacchetto padre.Frequently a child package uses values passed to it by another package that calls it, ordinarily its parent package. L'utilizzo di valori ricevuti da un pacchetto padre può essere utile negli scenari seguenti:Using values from a parent package is useful in scenarios such as the following:

  • Parti di un flusso di lavoro più grande sono assegnate a pacchetti diversi.Parts of a larger workflow are assigned to different packages. È ad esempio possibile creare un pacchetto che scarica dati durante la notte, li riepiloga, assegna i valori di riepilogo alle variabili appropriate e quindi le passa a un altro pacchetto per un'ulteriore elaborazione dei dati.For example, one package downloads data on a nightly basis, summarizes the data, assigns summary data values to variables, and then passes the values to another package for additional processing of the data.

  • Il pacchetto padre coordina dinamicamente le attività in un pacchetto figlio.The parent package dynamically coordinates tasks in a child package. Il pacchetto padre determina ad esempio il numero dei giorni del mese corrente e lo assegna a una variabile, di modo che il pacchetto figlio esegua una determinata attività per il numero di volte indicato da tale valore.For example, the parent package determines the number of days in a current month and assigns the number to a variable, and the child package performs a task that number of times.

  • Un pacchetto figlio deve accedere ai dati derivati dinamicamente dal pacchetto padre.A child package requires access to data that is dynamically derived by the parent package. Ad esempio, il pacchetto padre estrae dati da una tabella e carica il set di righe in una variabile, quindi il pacchetto figlio esegue ulteriori elaborazioni su tali dati.For example, the parent package extracts data from a table and loads the rowset into a variable, and the child package performs additional operations on the data.

    È possibile utilizzare i metodi seguenti per passare valori a un pacchetto figlio:You can use the following methods to pass values to a child package:

  • Configurazioni di pacchettoPackage Configurations

    Integration ServicesIntegration Services offre un tipo di configurazione, cioè Variabile pacchetto padre, per il passaggio dei valori dal pacchetto padre a quello figlio. provides a configuration type, the Parent Package Variable configuration, for passing values from parent to child packages. Tale configurazione è compilata in base al pacchetto figlio e utilizza una variabile del pacchetto padre.The configuration is built on the child package and uses a variable in the parent package. Viene quindi eseguito il mapping della configurazione a una variabile nel pacchetto figlio o alla proprietà di un oggetto nel pacchetto figlio.The configuration is mapped to a variable in the child package, or to the property of an object in the child package. La variabile può anche essere utilizzata negli script eseguiti dall'attività Script o dal componente script.The variable can also be used in the scripts used by the Script task or Script component.

  • ParametriParameters

    È possibile configurare l'attività Esegui pacchetto per eseguire il mapping delle variabili o dei parametri del pacchetto padre o dei parametri del progetto ai parametri del pacchetto figlio.You can configure the Execute Package Task to map parent package variables or parameters, or project parameters, to child package parameters. Il progetto deve utilizzare il modello di distribuzione del progetto e il pacchetto figlio deve essere contenuto nello stesso progetto in cui è contenuto il pacchetto padre.The project must use the project deployment model and the child package must be contained in the same project that contains the parent package. Per altre informazioni, vedere Editor attività Esegui pacchetto.For more information, see Execute Package Task Editor.

    Nota

    Se il parametro del pacchetto figlio non è sensibile e ne viene eseguito il mapping a un parametro padre sensibile, non sarà possibile completare l'esecuzione del pacchetto figlio.If the child package parameter is not sensitive and is mapped to a parent parameter that is sensitive, the child package will fail to run.

    Sono supportate le seguenti condizioni di mapping:The following mapping conditions are supported:

    Viene eseguito il mapping del parametro del pacchetto figlio sensibile a un parametro padre sensibileSensitive, child package parameter is mapped to a sensitive, parent parameter

    Viene eseguito il mapping del parametro del pacchetto figlio sensibile a un parametro padre non sensibileSensitive, child package parameter is mapped to a non-sensitive, parent parameter

    Viene eseguito il mapping del parametro del pacchetto figlio non sensibile a un parametro padre non sensibileNon-sensitive, child package parameter is mapped to a non-sensitive, parent parameter

    La variabile del pacchetto padre può essere definita nell'ambito dell'attività Esegui pacchetto o in un contenitore padre, ad esempio il pacchetto.The parent package variable can be defined in the scope of the Execute Package task or in a parent container such as the package. Se sono presenti più variabili con lo stesso nome, verrà utilizzata quella definita nell'ambito dell'attività Esegui pacchetto oppure quella con ambito più vicino all'attività.If multiple variables with the same name are available, the variable defined in the scope of the Execute Package task is used, or the variable that is closest in scope to the task.

    Per altre informazioni, vedere Utilizzare i valori di variabili e parametri in un pacchetto figlio.For more information, see Use the Values of Variables and Parameters in a Child Package.

Accesso alle variabili del pacchetto padreAccessing Parent Package Variables

Utilizzando l'attività Script è possibile consentire ai pacchetti figlio di accedere alle variabili del pacchetto padre.Child packages can access parent package variables by using the Script task. Quando si immette il nome della variabile del pacchetto padre nella pagina Script di Editor attività Script, non includere Utente: nel nome della variabile.When you enter the name of the parent package variable on the Script page in the Script Task Editor, don’t include User: in the variable name. In caso contrario, tramite il pacchetto figlio non viene individuata la variabile quando si esegue il pacchetto padre.Otherwise, the child package doesn’t locate the variable when you run the parent package.

Configurazione dell'attività Esegui pacchettoConfiguring the Execute Package Task

È possibile impostare le proprietà tramite Progettazione SSISSSIS o a livello di codice.You can set properties through SSISSSIS Designer or programmatically.

Per ulteriori informazioni sulle proprietà che è possibile impostare in Progettazione SSISSSIS , fare clic su uno degli argomenti seguenti:For more information about the properties that you can set in SSISSSIS Designer, click one of the following topics:

Configurazione dell'attività Esegui pacchetto a livello di codiceConfiguring the Execute Package Task Programmatically

Per ulteriori informazioni sull'impostazione di queste proprietà a livello di codice, fare clic sull'argomento seguente:For more information about programmatically setting these properties, click the following topic: