Attività Flusso di datiData Flow Task

L'attività Flusso di dati incapsula il motore flusso di dati che consente di spostare i dati dalle origini alle destinazioni e offre la possibilità di trasformare, pulire e modificare i dati durante lo spostamento.The Data Flow task encapsulates the data flow engine that moves data between sources and destinations, and lets the user transform, clean, and modify data as it is moved. L'aggiunta di un'attività Flusso di dati al flusso di controllo di un pacchetto consente al pacchetto di estrarre, trasformare e caricare dati.Addition of a Data Flow task to a package control flow makes it possible for the package to extract, transform, and load data.

Un flusso di dati è costituito da almeno un componente dei flussi di dati, ma è in genere formato da un set di componenti dei flussi di dati opportunamente connessi: origini che estraggono i dati, trasformazioni che modificano, inviano o riepilogano i dati e destinazioni che caricano i dati.A data flow consists of at least one data flow component, but it is typically a set of connected data flow components: sources that extract data; transformations that modify, route, or summarize data; and destinations that load data.

In fase di esecuzione l'attività Flusso di dati compila un piano di esecuzione, basato sul flusso di dati, che viene eseguito dal motore flusso di dati.At run time, the Data Flow task builds an execution plan from the data flow, and the data flow engine executes the plan. È possibile creare un'attività Flusso di dati priva di flusso di dati, ma l'attività verrà eseguita solo se include almeno un flusso di dati.You can create a Data Flow task that has no data flow, but the task executes only if it includes at least one data flow.

Per l'inserimento bulk dei dati di file di testo in un database di SQL ServerSQL Server , è possibile utilizzare l'attività Inserimento bulk anziché un'attività Flusso di dati e un flusso di dati.To bulk insert data from text files into a SQL ServerSQL Server database, you can use the Bulk Insert task instead of a Data Flow task and a data flow. L'attività Inserimento bulk non consente tuttavia la trasformazione dei dati.However, the Bulk Insert task cannot transform data. Per altre informazioni, vedere Attività Inserimento bulk.For more information, see Bulk Insert Task.

Più flussiMultiple Flows

Un'attività Flusso di dati può includere più flussi di dati.A Data Flow task can include multiple data flows. Se un'attività copia più set di dati e l'ordine in cui i dati vengono copiati non è significativo, è consigliabile includere più flussi di dati in un'unica attività Flusso di dati.If a task copies several sets of data, and if the order in which the data is copied is not significant, it can be more convenient to include multiple data flows in the Data Flow task. È ad esempio possibile creare cinque flussi di dati, ognuno dei quali copia dati da un file flat a una tabella delle dimensioni diversa in uno schema star di data warehouse.For example, you might create five data flows, each copying data from a flat file into a different dimension table in a data warehouse star schema.

Se un'attività flusso di dati contiene più flussi di dati, l'ordine di esecuzione verrà automaticamente determinato dal motore flusso di dati.However, the data flow engine determines order of execution when there are multiple data flows within one data flow task. Se l'ordine di esecuzione è rilevante, sarà pertanto necessario includere nel pacchetto più attività Flusso di dati, ognuna contenente un solo flusso di dati.Therefore, when order is important, the package should use multiple Data Flow tasks, each task containing one data flow. Sarà quindi possibile applicare vincoli di precedenza per controllare l'ordine di esecuzione delle attività.You can then apply precedence constraints to control the execution order of the tasks.

Nella figura seguente viene illustrata un'attività Flusso di dati che include più flussi di dati.The following diagram shows a Data Flow task that has multiple data flows.

I flussi di datiData flows

Voci di logLog Entries

Integration ServicesIntegration Services include un set di eventi del log disponibili per tutte le attività. provides a set of log events that are available to all tasks. Integration ServicesIntegration Services fornisce anche voci di log personalizzate a molte attività. also provides custom log entries to many tasks. Per altre informazioni, vedere registrazione di Integration Services (SSIS).For more information, see Integration Services (SSIS) Logging. L'attività Flusso di dati include le voci di log personalizzate seguenti:The Data Flow task includes the following custom log entries:

Voce di logLog entry DescriptionDescription
BufferSizeTuningBufferSizeTuning Indica che l'attività Flusso di dati ha modificato le dimensioni del buffer.Indicates that the Data Flow task changed the size of the buffer. In questa voce di log vengono indicati i motivi della modifica delle dimensioni del buffer e le nuove dimensioni temporanee del buffer.The log entry describes the reasons for the size change and lists the temporary new buffer size.
OnPipelinePostEndOfRowsetOnPipelinePostEndOfRowset Indica che a un componente è stato inviato il segnale di fine del set di righe, che viene impostato dall'ultima chiamata al metodo ProcessInput .Denotes that a component has been given its end-of-rowset signal, which is set by the last call of the ProcessInput method. Viene scritta una voce per ogni componente del flusso di dati che elabora dati di input.An entry is written for each component in the data flow that processes input. Tale voce include il nome del componente.The entry includes the name of the component.
OnPipelinePostPrimeOutputOnPipelinePostPrimeOutput Indica che il componente ha completato l'ultima chiamata al metodo PrimeOutput .Indicates that the component has completed its last call to the PrimeOutput method. A seconda del flusso di dati, è possibile che vengano scritte più voci di log.Depending on the data flow, multiple log entries may be written. Se il componente è un'origine, questa voce di log indica che tale componente ha terminato l'elaborazione delle righe.If the component is a source, this log entry means that the component has finished processing rows.
OnPipelinePreEndOfRowsetOnPipelinePreEndOfRowset Indica che un componente sta per ricevere il segnale di fine del set di righe, che viene impostato dall'ultima chiamata al metodo ProcessInput .Indicates that a component is about to receive its end-of-rowset signal, which is set by the last call of the ProcessInput method. Viene scritta una voce per ogni componente del flusso di dati che elabora dati di input.An entry is written for each component in the data flow that processes input. Tale voce include il nome del componente.The entry includes the name of the component.
OnPipelinePrePrimeOutputOnPipelinePrePrimeOutput Indica che il componente sta per ricevere una chiamata dal metodo PrimeOutput .Indicates that the component is about to receive its call from the PrimeOutput method. A seconda del flusso di dati, è possibile che vengano scritte più voci di log.Depending on the data flow, multiple log entries may be written.
OnPipelineRowsSentOnPipelineRowsSent Specifica il numero delle righe inviate all'input di un componente da una chiamata al metodo ProcessInput .Reports the number of rows provided to a component input by a call to the ProcessInput method. La voce di log include il nome del componente.The log entry includes the component name.
PipelineBufferLeakPipelineBufferLeak Fornisce informazioni su tutti i componenti che hanno mantenuto attivi i buffer dopo la chiusura di Gestione buffer.Provides information about any component that kept buffers alive after the buffer manager goes away. Se vi è ancora un buffer attivo, le risorse dei buffer non sono state rilasciate e potrebbero verificarsi perdite di memoria.If a buffer is still alive, buffers resources were not released and may cause memory leaks. Nella voce di log vengono indicati il nome del componente e l'ID del buffer.The log entry provides the name of the component and the ID of the buffer.
PipelineComponentTimePipelineComponentTime Indica la quantità di tempo (in millisecondi) utilizzata dal componente per ciascuno dei cinque passaggi principali dell'elaborazione, ovvero Validate, PreExecute, PostExecute, ProcessInput e ProcessOutput.Reports the amount of time (in milliseconds) that the component spent in each of its five major processing steps—Validate, PreExecute, PostExecute, ProcessInput, and ProcessOutput.
PipelineExecutionPlanPipelineExecutionPlan Specifica il piano di esecuzione del flusso di dati.Reports the execution plan of the data flow. Il piano di esecuzione offre informazioni sulle modalità di invio dei buffer ai componenti.The execution plan provides information about how buffers will be sent to components. Insieme alla voce di log PipelineExecutionTrees, queste informazioni illustrano ciò che avviene nell'attività Flusso di dati.This information, in combination with the PipelineExecutionTrees log entry, describes what is happening within the Data Flow task.
PipelineExecutionTreesPipelineExecutionTrees Specifica gli alberi di esecuzione del layout nel flusso di dati.Reports the execution trees of the layout in the data flow. L'utilità di pianificazione del motore flusso di dati utilizza tali alberi per compilare il piano di esecuzione del flusso di dati.The scheduler of the data flow engine uses the trees to build the execution plan of the data flow.
PipelineInitializationPipelineInitialization Fornisce le informazioni di inizializzazione relative all'attività,Provides initialization information about the task. che includono le directory da utilizzare per l'archiviazione temporanea dei dati BLOB, le dimensioni predefinite del buffer e il numero di righe in un buffer.This information includes the directories to use for temporary storage of BLOB data, the default buffer size, and the number of rows in a buffer. A seconda della configurazione dell'attività Flusso di dati, è possibile che vengano scritte più voci di log.Depending on the configuration of the Data Flow task, multiple log entries may be written.

Queste voci di log forniscono numerose informazioni sull'esecuzione dell'attività Flusso di dati ogni volta che si esegue un pacchetto.These log entries provide a wealth of information about the execution of the Data Flow task each time you run a package. L'esecuzione ripetuta dei pacchetti consente nel tempo di acquisire importanti informazioni cronologiche sull'elaborazione eseguita dall'attività, gli eventuali problemi che possono influire sulle prestazioni e il volume di dati gestito dall'attività.As you run the packages repeatedly, you can capture information that over time provides important historical information about the processing that the task performs, issues that might affect performance, and the data volume that task handles.

Per ulteriori informazioni sull'utilizzo di queste voci di log per monitorare e migliorare le prestazioni del flusso di dati, vedere uno degli argomenti seguenti:For more information about how to use these log entries to monitor and improve the performance of the data flow, see one of the following topics:

Messaggi di esempio di un'attività Flusso di datiSample Messages From a Data Flow Task

Nella tabella seguente vengono elencati messaggi di esempio per le voci di log relative a un pacchetto molto semplice.The following table lists sample messages for log entries for a very simple package. Il pacchetto utilizza un'origine OLE DB per estrarre dati da una tabella, una trasformazione Ordinamento per ordinare i dati e una destinazione OLE DB per scrivere i dati in una tabella diversa.The package uses an OLE DB source to extract data from a table, a Sort transformation to sort the data, and an OLE DB destination to writes the data to a different table.

Voce di logLog entry MessaggiMessages
BufferSizeTuningBufferSizeTuning Rows in buffer type 0 would cause a buffer size greater than the configured maximum. There will be only 9637 rows in buffers of this type.

Rows in buffer type 2 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.

Rows in buffer type 3 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.
OnPipelinePostEndOfRowsetOnPipelinePostEndOfRowset A component will be given the end of rowset signal. : 1180 : Sort : 1181 : Sort Input

A component will be given the end of rowset signal. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePostPrimeOutputOnPipelinePostPrimeOutput A component has returned from its PrimeOutput call. : 1180 : Sort

A component has returned from its PrimeOutput call. : 1 : OLE DB Source
OnPipelinePreEndOfRowsetOnPipelinePreEndOfRowset A component has finished processing all of its rows. : 1180 : Sort : 1181 : Sort Input

A component has finished processing all of its rows. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePrePrimeOutputOnPipelinePrePrimeOutput PrimeOutput will be called on a component. : 1180 : Sort

PrimeOutput will be called on a component. : 1 : OLE DB Source
OnPipelineRowsSentOnPipelineRowsSent Rows were provided to a data flow component as input. : : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76

Rows were provided to a data flow component as input. : : 1308 : Sort Output : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input : 76
PipelineComponentTimePipelineComponentTime The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).
PipelineExecutionPlanPipelineExecutionPlan SourceThread0

Drives: 1

Influences: 1180 1291

Output Work List

CreatePrimeBuffer of type 1 for output ID 11.

SetBufferListener: "WorkThread0" for input ID 1181

CreatePrimeBuffer of type 3 for output ID 12.

CallPrimeOutput on component "OLE DB Source" (1)

End Output Work List

End SourceThread0

WorkThread0

Drives: 1180

Influences: 1180 1291

Input Work list, input ID 1181 (1 EORs Expected)

CallProcessInput on input ID 1181 on component "Sort" (1180) for view type 2

End Input Work list for input 1181

Output Work List

CreatePrimeBuffer of type 4 for output ID 1182.

SetBufferListener: "WorkThread1" for input ID 1304

CallPrimeOutput on component "Sort" (1180)

End Output Work List

End WorkThread0

WorkThread1

Drives: 1291

Influences: 1291

Input Work list, input ID 1304 (1 EORs Expected)

CallProcessInput on input ID 1304 on component "OLE DB Destination" (1291) for view type 5

End Input Work list for input 1304

Output Work List

End Output Work List

End WorkThread1
PipelineExecutionTreesPipelineExecutionTrees begin execution tree 0

output "OLE DB Source Output" (11)

input "Sort Input" (1181)

end execution tree 0

begin execution tree 1

output "OLE DB Source Error Output" (12)

end execution tree 1

begin execution tree 2

output "Sort Output" (1182)

input "OLE DB Destination Input" (1304)

output "OLE DB Destination Error Output" (1305)

end execution tree 2
PipelineInitializationPipelineInitialization No temporary BLOB data storage locations were provided. The buffer manager will consider the directories in the TEMP and TMP environment variables.

The default buffer size is 10485760 bytes.

Buffers will have 10000 rows by default

The data flow will not remove unused components because its RunInOptimizedMode property is set to false.

Per molti eventi vengono scritte più voci nel log e i messaggi relativi a numerose voci di log contengono dati complessi.Many log events write multiple entries, and the messages for a number of log entries contain complex data. Per semplificare la comprensione e la comunicazione del contenuto dei messaggi complessi, è possibile analizzare il testo dei messaggi.To make it easier to understand and to communicate the content of complex messages you can parse the message text. In base alla posizione dei log, è possibile utilizzare istruzioni Transact-SQL o un componente script per separare il testo complesso in colonne o altri formati che si ritengono più utili.Depending on the location of the logs, you can use Transact-SQL statements or a Script component to separate the complex text into columns or other formats that you find more useful.

Nella tabella seguente viene ad esempio illustrato il messaggio "Sono state passate righe come input per un componente del flusso di dati.For example, the following table contains the message "Rows were provided to a data flow component as input. : : 1185 : Output origine OLE DB : 1180 : Ordinamento : 1181 : Input ordinamento : 76", scomposto in colonne.: : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76", parsed into columns. Il messaggio è stato scritto dall'evento OnPipelineRowsSent quando le righe sono state inviate dall'origine OLE DB alla trasformazione Ordinamento.The message was written by the OnPipelineRowsSent event when rows were sent from the OLE DB source to the Sort transformation.

ColonnaColumn DescriptionDescription ValoreValue
PathIDPathID Valore della proprietà ID del percorso tra l'origine OLE DB e la trasformazione Ordinamento.The value from the ID property of the path between the OLE DB source and the Sort transformation. 11851185
PathNamePathName Valore della proprietà Name del percorso.The value from the Name property of the path. Output origine OLE DBOLE DB Source Output
ComponentIDComponentID Valore della proprietà ID della trasformazione Ordinamento.The value of the ID property of the Sort transformation. 11801180
ComponentNameComponentName Valore della proprietà Name della trasformazione Ordinamento.The value from the Name property of the Sort transformation. SortSort
InputIDInputID Valore della proprietà ID dell'input della trasformazione Ordinamento.The value from the ID property of the input to the Sort transformation. 11811181
InputNameInputName Valore della proprietà Name dell'input della trasformazione Ordinamento.The value from the Name property of the input to the Sort transformation. Input ordinamentoSort Input
RowsSentRowsSent Numero di righe inviate all'input della trasformazione Ordinamento.The number of rows sent to the input of the Sort transformation. 7676

Configurazione dell'attività Flusso di datiConfiguration of the Data Flow Task

È possibile impostare le proprietà a livello di codice o nella finestra Proprietà .You can set properties in the Properties window or programmatically.

Per altre informazioni sull'impostazione di queste proprietà nella finestra Proprietà , fare clic sull'argomento seguente:For more information about how to set these properties in the Properties window, click the following topic:

Configurazione a livello di codice dell'attività Flusso di datiProgrammatic Configuration of the Data Flow Task

Per ulteriori informazioni sull'aggiunta di un'attività Flusso di dati a un pacchetto a livello di codice e sulle impostazioni delle proprietà del flusso di dati, fare clic sull'argomento seguente:For more information about programmatically adding a data flow task to a package and setting data flow properties, click the following topic:

Impostare le proprietà di un'attività o di un contenitoreSet the Properties of a Task or Container

Video relativo al server di distribuzione di dati bilanciatisul sito technet.microsoft.com.Video, Balanced Data Distributer, on technet.microsoft.com.