Partilhar via


Comparando a tarefa Script e o componente Script

Aplica-se a: Tempo de execução de integração do SSIS do SQL Server no Azure Data Factory

A tarefa Script, disponível na janela Fluxo de Controle do designer do Integration Services e o componente Script, disponível na janela Fluxo de Dados, têm finalidades bem distintas em um pacote do Integration Services. A tarefa é uma ferramenta de fluxo de controle de uso general, enquanto o componente serve como uma origem, transformação ou destino no fluxo de dados. Apesar das diferentes finalidades, a tarefa Script e o componente Script possuem algumas semelhanças nas ferramentas de codificação que eles usam e nos objetos do pacote que são disponibilizados para o desenvolvedor. A compreensão dessas semelhanças e diferenças pode ajudá-lo a usar a tarefa e o componente de forma mais eficaz.

Semelhanças entre a tarefa Script e o componente Script

A tarefa Script e o componente Script compartilham os recursos em comum a seguir.

Recurso Descrição
Dois modos de design-tempo Na tarefa e no componente, você começa especificando propriedades no editor e, depois, alterna para o ambiente de desenvolvimento para escrever código.
Microsoft Visual Studio VSTA (Tools for Applications) A tarefa e o componente usam o mesmo VSTA IDE e dão suporte ao código escrito em Microsoft Visual Basic ou Microsoft Visual C#.
Scripts pré-compilados A partir do SQL Server 2008 Integration Services (SSIS), todos os scripts são pré-compilados. Em versões anteriores, você podia especificar se os scripts foram pré-compilados.

O script é pré-compilado em código binário, permitindo maior rapidez na execução, mas isso resulta no aumento do tamanho do pacote.
Depuração A tarefa e o componente dão suporte a pontos de interrupção e passa pelo código durante a depuração no ambiente de design. Para obter mais informações, consulte Codificando e depurando a tarefa Script e Codificando e depurando o componente Script.

Diferenças entre a tarefa Script e o componente Script

Convém destacar as diferenças a seguir entre a tarefa Script e o componente Script.

Recurso Tarefa Script Componente Script
Fluxo de controle / Fluxo de dados A tarefa Script é configurada na guia Fluxo de Controle do designer e é executada fora do fluxo de dados do pacote. O componente Script é configurado na página Fluxo de Dados do designer e representa uma origem, transformação ou destino na tarefa Fluxo de Dados.
Finalidade Uma tarefa Script pode realizar praticamente qualquer tarefa para fins gerais. Especifique se você deseja criar uma origem, transformação ou destino com o componente Script.
Execução Uma tarefa Script executa código personalizado em algum ponto no fluxo de trabalho do pacote. A menos que você coloque isso em um contêiner de loop ou em um manipulador de eventos, ele só será executado uma vez. Um componente Script também é executado uma vez, mas costuma executar sua rotina de processamento principal uma vez para cada linha de dados do fluxo de dados.
Editor O Editor da Tarefa Script contém três páginas: Geral, Script e Expressões. Somente as propriedades ReadOnlyVariables, ReadWriteVariables e ScriptLanguage afetam diretamente o código que você pode escrever. O Editor de Transformação Scripts contém no máximo quatro páginas: Colunas de Entrada, Entradas e Saídas, Script e Gerenciadores de Conexões. Os metadados e propriedades que você configura em cada uma dessas páginas determinam os membros das classes base que são gerenciadas automaticamente para seu uso na codificação.
Interação com o pacote No código escrito para uma tarefa Script, você usa a propriedade Dts para acessar outros recursos do pacote. A propriedade Dts é um membro da classe ScriptMain. No código do componente Script, você usa propriedades de acessador tipado para acessar determinados recursos do pacote, tais como variáveis e gerenciadores de conexões.

O método PreExecute só pode acessar variáveis somente leitura. O método PostExecute pode acessar variáveis somente leitura e de leitura/gravação.

Para obter mais informações sobre estes métodos, consulte Codificando e depurando o componente Script.
Usando variáveis A tarefa Script usa a propriedade Variables do objeto Dts para acessar variáveis que estão disponíveis através das propriedades ReadOnlyVariables e ReadWriteVariables da tarefa. Por exemplo:

[Visual Basic]

Dim myVar as String
myVar = Dts.Variables("MyStringVariable").Value.ToString

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
O componente Script usa propriedades do acessador tipado da classe base gerada automaticamente, criada com base nas propriedades ReadOnlyVariables e ReadWriteVariables do componente. Por exemplo:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Usando conexões A tarefa Script usa a propriedade Connections do objeto Dts para acessar gerenciadores de conexões definidos no pacote. Por exemplo:

[Visual Basic]

Dim myFlatFileConnection As String
myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)

[C#]

string myFlatFileConnection;
myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
O componente Script usa propriedades do acessador tipado da classe base gerada automaticamente, criada a partir da lista de gerenciadores de conexões digitada pelo usuário na página Gerenciadores de Conexões do editor. Por exemplo:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Gerando eventos A tarefa Script usa a propriedade Events do objeto Dts para gerar eventos. Por exemplo:

[Visual Basic]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)

[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
O componente Script gera erros, avisos e mensagens informativas através dos métodos da interface IDTSComponentMetaData100 retornados pela propriedade ComponentMetaData. Por exemplo:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Registrando em log A tarefa Script usa o método Log do objeto Dts para registrar informações para provedores de log habilitados. Por exemplo:

[Visual Basic]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)

[C#]

byte[] bt = new byte[0];
Dts.Log("Test Log Event", 0, bt);
O componente Script usa o método Log da classe base gerada automaticamente para registrar informações para provedores de log habilitados. Por exemplo:

[Visual Basic]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)

[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
Retornando resultados A tarefa Script usa a propriedade TaskResult e a propriedade opcional ExecutionValue do objeto Dts para notificar o runtime sobre seus resultados. O componente Script é executado como parte da tarefa Fluxo de Dados e não relata resultados através de uma dessas propriedades.

Consulte Também

Estender o pacote com a tarefa Script
Estender o fluxo de dados com o componente de Script