Tarefa de Fluxo de DadosData Flow Task

A tarefa de Fluxo de Dados encapsula o mecanismo de fluxo de dados que move dados entre as origens e os destinos, permitindo que o usuário transforme, limpe e modifique os dados à medida que são movidos.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. A adição de uma tarefa de Fluxo de Dados em um pacote de fluxo de controle permite que o pacote extraia, transforme e carregue dados.Addition of a Data Flow task to a package control flow makes it possible for the package to extract, transform, and load data.

Um fluxo de dados consiste em pelo menos um componente de fluxo de dados, mas normalmente é um conjunto de componentes de fluxo de dados conectados: fontes que extraem dados; transformações que modificam, roteiam ou resumem dados; e destinos que carregam dados.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.

Em tempo de execução, a tarefa de Fluxo de Dados cria um plano de execução a partir do fluxo de dados e o mecanismo de fluxo de dados executa o plano.At run time, the Data Flow task builds an execution plan from the data flow, and the data flow engine executes the plan. Você pode criar uma tarefa de Fluxo de Dados que não tenha nenhum fluxo de dados, porém a tarefa será executada somente se pelo menos um fluxo de dados for incluído.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.

Para inserir dados de arquivos de texto em massa em um banco de dados do SQL ServerSQL Server , você pode usar a tarefa Inserção em Massa em vez de uma tarefa de Fluxo de Dados e um fluxo de dados.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. Porém, a tarefa de Inserção em Massa não pode transformar dados.However, the Bulk Insert task cannot transform data. Para obter mais informações, veja Tarefa Inserção em Massa.For more information, see Bulk Insert Task.

Vários fluxosMultiple Flows

Uma tarefa de Fluxo de Dados pode incluir vários fluxos de dados.A Data Flow task can include multiple data flows. Se uma tarefa copiar vários conjuntos de dados e se a ordem na qual os dados são copiados não for significativa, poderá ser mais conveniente incluir vários fluxos de dados na tarefa de Fluxo de Dados.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. Por exemplo, você poderia criar cinco fluxos de dados, cada um copiando dados de um arquivo simples para uma tabela de dimensão diferente em um esquema em estrela de 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.

Entretanto, o mecanismo de fluxo de dados determina a ordem de execução quando há vários fluxos de dados em uma tarefa de fluxo de dados.However, the data flow engine determines order of execution when there are multiple data flows within one data flow task. Portanto, quando a ordem for importante, o pacote deverá usar várias tarefas de Fluxo de Dados, cada tarefa contendo um fluxo de dados.Therefore, when order is important, the package should use multiple Data Flow tasks, each task containing one data flow. Você poderá então aplicar restrições de precedência para controlar a ordem de execução das tarefas.You can then apply precedence constraints to control the execution order of the tasks.

O diagrama a seguir mostra uma tarefa de Fluxo de Dados com vários fluxos de dados.The following diagram shows a Data Flow task that has multiple data flows.

Fluxos de dadosData flows

Entradas de logLog Entries

Integration ServicesIntegration Services fornece um conjunto de eventos de log que estão disponíveis para todas as tarefas. provides a set of log events that are available to all tasks. Integration ServicesIntegration Services também fornece entradas de log personalizadas a muitas tarefas. also provides custom log entries to many tasks. Para obter mais informações, consulte Log do SSIS (Integration Services).For more information, see Integration Services (SSIS) Logging. A tarefa de Fluxo de Dados inclui as seguintes entradas de log personalizadas:The Data Flow task includes the following custom log entries:

Entrada de logLog entry DescriptionDescription
BufferSizeTuningBufferSizeTuning Indica que a tarefa de Fluxo de Dados alterou o tamanho do buffer.Indicates that the Data Flow task changed the size of the buffer. A entrada de log descreve os motivos da mudança de tamanho e relaciona o novo tamanho do buffer temporário.The log entry describes the reasons for the size change and lists the temporary new buffer size.
OnPipelinePostEndOfRowsetOnPipelinePostEndOfRowset Indica que um componente recebeu o sinal de final do conjunto de linhas, definido pela última chamada do método ProcessInput .Denotes that a component has been given its end-of-rowset signal, which is set by the last call of the ProcessInput method. Uma entrada é gravada para cada componente no fluxo de dados que processa a entrada.An entry is written for each component in the data flow that processes input. A entrada contém o nome do componente.The entry includes the name of the component.
OnPipelinePostPrimeOutputOnPipelinePostPrimeOutput Indica que o componente completou sua última chamada para o método PrimeOutput .Indicates that the component has completed its last call to the PrimeOutput method. Dependendo do fluxo de dados, várias entradas de log podem ser gravadas.Depending on the data flow, multiple log entries may be written. Se o componente for uma fonte, essa entrada de log significa que o componente tem linhas de processamento concluídas.If the component is a source, this log entry means that the component has finished processing rows.
OnPipelinePreEndOfRowsetOnPipelinePreEndOfRowset Indica que um componente está prestes a receber o sinal de final do conjunto de linhas, definido pela última chamada do método 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. Uma entrada é gravada para cada componente no fluxo de dados que processa a entrada.An entry is written for each component in the data flow that processes input. A entrada contém o nome do componente.The entry includes the name of the component.
OnPipelinePrePrimeOutputOnPipelinePrePrimeOutput Indica que o componente está prestes a receber sua chamada do método PrimeOutput .Indicates that the component is about to receive its call from the PrimeOutput method. Dependendo do fluxo de dados, várias entradas de log podem ser gravadas.Depending on the data flow, multiple log entries may be written.
OnPipelineRowsSentOnPipelineRowsSent Informa o número de linhas fornecido a uma entrada de componente por uma chamada para o método ProcessInput .Reports the number of rows provided to a component input by a call to the ProcessInput method. A entrada de log inclui o nome do componente.The log entry includes the component name.
PipelineBufferLeakPipelineBufferLeak Fornece informações sobre qualquer componente que manteve buffers ativos depois que o gerenciador de buffers for desativado.Provides information about any component that kept buffers alive after the buffer manager goes away. Se um buffer ainda estiver ativo, os recursos de buffers não foram liberados e pode haver perdas de memória.If a buffer is still alive, buffers resources were not released and may cause memory leaks. A entrada de log fornece o nome do componente e a ID do buffer.The log entry provides the name of the component and the ID of the buffer.
PipelineComponentTimePipelineComponentTime Reporta o tempo (em milissegundos) que o componente gastou em cada uma das cinco principais etapas de processamento — 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 Informa o plano de execução do fluxo de dados.Reports the execution plan of the data flow. O plano de execução fornece informações sobre como os buffers serão enviados para os componentes.The execution plan provides information about how buffers will be sent to components. Essas informações, em combinação com a entrada de log PipelineExecutionTrees, descrevem o que está ocorrendo na tarefa de Fluxo de Dados.This information, in combination with the PipelineExecutionTrees log entry, describes what is happening within the Data Flow task.
PipelineExecutionTreesPipelineExecutionTrees Informa as árvores de execução sobre o layout do fluxo de dados.Reports the execution trees of the layout in the data flow. O agendador do mecanismo de fluxo de dados usa as árvores para criar o plano de execução do fluxo de dados.The scheduler of the data flow engine uses the trees to build the execution plan of the data flow.
PipelineInitializationPipelineInitialization Fornece informações de inicialização sobre a tarefa.Provides initialization information about the task. Essas informações incluem os diretórios para armazenamento temporário de dados de BLOB, o tamanho do buffer padrão e o número de linhas em um 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. Dependendo da configuração da tarefa de Fluxo de Dados, várias entradas de log podem ser gravadas.Depending on the configuration of the Data Flow task, multiple log entries may be written.

Essas entradas de log fornecerão informações detalhadas sobre a execução da tarefa de Fluxo de Dados sempre que você executar um pacote.These log entries provide a wealth of information about the execution of the Data Flow task each time you run a package. Ao executar os pacotes repetidamente, você poderá coletar informações que com o passar do tempo fornecerá informações históricas importantes sobre o processamento que a tarefa executa, problemas que podem afetar o desempenho e o volume de dados que a tarefa controla.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.

Para obter mais informações sobre como usar essas entradas de log para monitorar e melhorar o desempenho do fluxo de dados, consulte um dos seguintes tópicos: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:

Mensagens de amostra de uma tarefa de Fluxo de DadosSample Messages From a Data Flow Task

A tabela a seguir relaciona as mensagens de amostra de entradas de log para um pacote simples.The following table lists sample messages for log entries for a very simple package. O pacote usa uma origem OLE DB para extrair dados de uma tabela, uma transformação Classificar para classificar os dados e um destino OLE DB para gravar os dados em uma tabela diferente.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.

Entrada de logLog entry MensagensMessages
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.

Muitos eventos de log gravam várias entradas, e as mensagens para várias entradas de log contêm dados complexos.Many log events write multiple entries, and the messages for a number of log entries contain complex data. Para facilitar a compreensão e comunicar o conteúdo de mensagens complexas, você pode analisar a mensagem de texto.To make it easier to understand and to communicate the content of complex messages you can parse the message text. Dependendo do local dos logs, você poderá usar as instruções Transact-SQL ou um componente Script para separar o texto complexo em colunas ou em outros formatos que considere mais útil.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.

Por exemplo, a tabela a seguir contém a mensagem "Foram fornecidas linhas para um componente de fluxo de dados como entrada.For example, the following table contains the message "Rows were provided to a data flow component as input. : : 1185: Saída de origem OLE DB: 1180: Classificação: 1181: Classificar entrada: 76", analisado em colunas.: : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76", parsed into columns. A mensagem foi gravada pelo evento OnPipelineRowsSent quando foram enviadas linhas da origem OLE DB para a transformação Classificação.The message was written by the OnPipelineRowsSent event when rows were sent from the OLE DB source to the Sort transformation.

ColunaColumn DescriptionDescription ValueValue
PathIDPathID O valor da propriedade ID do caminho entre a origem OLE DB e a transformação Classificação.The value from the ID property of the path between the OLE DB source and the Sort transformation. 11851185
PathNamePathName O valor da propriedade Nome do caminho.The value from the Name property of the path. Saída da origem OLE DBOLE DB Source Output
ComponentIDComponentID O valor da propriedade ID da transformação Classificação.The value of the ID property of the Sort transformation. 11801180
ComponentNameComponentName O valor da propriedade Nome da transformação Classificação.The value from the Name property of the Sort transformation. SortSort
InputIDInputID O valor da propriedade ID da entrada para a transformação Classificação.The value from the ID property of the input to the Sort transformation. 11811181
InputNameInputName O valor da propriedade Nome da entrada para a transformação Classificação.The value from the Name property of the input to the Sort transformation. Classificar entradaSort Input
RowsSentRowsSent O número de linhas enviadas para a entrada da transformação Classificação.The number of rows sent to the input of the Sort transformation. 7676

Configuração da tarefa Fluxo de DadosConfiguration of the Data Flow Task

Você pode definir as propriedades na janela Propriedades ou programaticamente.You can set properties in the Properties window or programmatically.

Para obter mais informações sobre como definir essas propriedades na janela Propriedades , clique no tópico a seguir:For more information about how to set these properties in the Properties window, click the following topic:

Configuração programática da tarefa Fluxo de DadosProgrammatic Configuration of the Data Flow Task

Para obter mais informações sobre como adicionar uma tarefa de fluxo de dados programaticamente em um pacote e definir propriedades de fluxo de dados, clique no tópico a seguir:For more information about programmatically adding a data flow task to a package and setting data flow properties, click the following topic:

Definir as propriedades de uma tarefa ou contêinerSet the Properties of a Task or Container

Vídeo, Distribuidor de Dados Balanceados, em technet.microsoft.com.Video, Balanced Data Distributer, on technet.microsoft.com.