Compartilhar via


Comparando a Tarefa Script e o Componente Script

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 muito diferentes em um pacote do Integration Services. A tarefa é uma ferramenta de fluxo de controle de uso geral, enquanto o componente serve como uma origem, transformação ou destino no fluxo de dados. No entanto, apesar de suas diferentes finalidades, a tarefa Script e o componente Script têm algumas semelhanças nas ferramentas de codificação que eles usam e nos objetos no pacote que eles disponibilizam para o desenvolvedor. Entender suas semelhanças e diferenças pode ajudá-lo a usar a tarefa e o componente com mais eficiência.

Semelhanças entre a tarefa Script e o componente Script

A tarefa Script e o componente Script compartilham os seguintes recursos comuns.

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

O script é pré-compilado em código binário, permitindo uma execução mais rápida, mas ao custo do aumento do tamanho do pacote.
Resolução de Erros A tarefa e o componente dão suporte a pontos de interrupção e passo a passo pelo código durante a depuração no ambiente de design. Para obter mais informações, consulte Codificação e depuração da tarefa Script e [Codificação e depuração do componente script](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

Diferenças entre a tarefa Script e o componente script

A tarefa Script e o componente Script têm as seguintes diferenças notáveis.

Característica 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.
Propósito Uma tarefa Script pode realizar quase qualquer tarefa de uso geral. Você deve especificar se deseja criar uma origem, transformação ou destino com o componente Script.
Execução Uma tarefa Script executa o código personalizado em algum momento no fluxo de trabalho do pacote. A menos que você o coloque em um contêiner de loop ou em um manipulador de eventos, ele só é executado uma vez. Um componente script também é executado uma vez, mas normalmente executa sua rotina de processamento principal uma vez para cada linha de dados no fluxo de dados.
Editor O Editor de Tarefas de Script tem três páginas: Geral, Script e Expressões. Somente as ReadOnlyVariables propriedades e ReadWriteVariablese ScriptLanguage afetam diretamente o código que você pode escrever. O Editor de Transformação Script tem até quatro páginas: Colunas de Entrada, Entradas e Saídas, Script e Gerenciadores de Conexões. Os metadados e as propriedades que você configura em cada uma dessas páginas determinam os membros das classes base que são gerados automaticamente para seu uso na codificação.
Interação com o pacote No código escrito para uma tarefa Script, você usa a Dts propriedade para acessar outros recursos do pacote. A Dts propriedade é um membro da ScriptMain classe. No código do componente Script, você usa propriedades do acessador digitadas para acessar determinados recursos de pacote, 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 esses métodos, consulte [Codificação e depuração do componente script](.. /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
Usar variáveis A tarefa Script usa a Variables propriedade do Dts objeto para acessar variáveis que estão disponíveis por meio das propriedades e ReadWriteVariables da ReadOnlyVariables tarefa. Por exemplo:

[VB]

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 tipadas da classe baseada gerada automaticamente, criadas a partir das propriedades e ReadWriteVariables do ReadOnlyVariables componente. Por exemplo:

[VB]

Dim myVar as String myVar = Me.Variables.MyStringVariable



[C#]

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

[VB]

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 digitadas da classe base gerada automaticamente, criadas a partir da lista de gerenciadores de conexões inseridos pelo usuário na página Gerenciadores de Conexões do editor. Por exemplo:

[VB]

Dim connMgr As IDTSConnectionManager100 connMgr = Me.Connections.MyADONETConnection



[C#]

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

[VB]

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 usando os métodos da IDTSComponentMetaData100 interface retornados pela ComponentMetaData propriedade. Por exemplo:

[VB]

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

[VB]

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 Log método da classe base gerada automaticamente para registrar informações em log para provedores de log habilitados. Por exemplo:

[VB]

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 TaskResult propriedade e a propriedade opcional ExecutionValue do Dts objeto para notificar o runtime de seus resultados. O componente Script é executado como parte da tarefa Fluxo de Dados e não relata resultados usando nenhuma dessas propriedades.

Consulte Também

Estendendo o pacote com a tarefa Script
Estender o fluxo de dados com o componente de Script
Usando uma tarefa de script no SSIS do SQL Server Integration Services para se conectar a um serviço Web