Comparando a Tarefa de Script e o Componente de Script

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

A tarefa Script, disponível na janela Control Flow do designer de Serviços de Integração, e o componente Script, disponível na janela Fluxo de Dados, têm propósitos muito diferentes num pacote de Serviços de Integração. A tarefa é uma ferramenta de fluxo de controlo de uso geral, enquanto o componente serve como fonte, transformação ou destino no fluxo de dados. Apesar dos seus propósitos diferentes, a tarefa Script e o componente Script têm algumas semelhanças nas ferramentas de programação que utilizam e nos objetos do pacote que disponibilizam ao programador. Compreender as suas semelhanças e diferenças pode ajudá-lo a usar tanto a tarefa como o componente de forma mais eficaz.

Semelhanças entre a Tarefa de Script e o Componente de Script

A tarefa Script e o componente Script partilham as seguintes características comuns.

Feature Description
Dois modos de design time Tanto na tarefa como no componente, começas por especificar propriedades no editor e depois mudas para o ambiente de desenvolvimento para escrever código.
Microsoft Visual Studio Ferramentas para Aplicações (VSTA) Tanto a tarefa como o componente utilizam o mesmo IDE VSTA e suportam 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, podia especificar se os scripts estavam 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.
Debugging Tanto a tarefa como o componente suportam pontos de interrupção e passos em passo através do código durante a depuração no ambiente de design. Para mais informações, consulte Codificação e Depuração da Tarefa de Script e Codificação e Depuração do Componente de Script.

Diferenças entre a Tarefa de Script e o Componente de Script

A tarefa Script e o componente Script apresentam as seguintes diferenças notáveis.

Feature Tarefa de script Componente Script
Fluxo de controlo / Fluxo de dados A tarefa Script está configurada no separador Control Flow do designer e executa-se fora do fluxo de dados do pacote. O componente Script está configurado na página Fluxo de Dados do designer e representa uma fonte, transformação ou destino na tarefa Fluxo de Dados.
Purpose Uma tarefa de script pode realizar quase qualquer tarefa de uso geral. Deve especificar se quer criar uma fonte, transformação ou destino com o componente Script.
Execution Uma tarefa Script executa código personalizado em algum momento do fluxo de trabalho do pacote. A menos que o coloques num contentor de loop ou num gestor de eventos, só corre uma vez. Um componente Script também executa uma vez, mas normalmente executa a sua rotina principal de processamento uma vez por cada linha de dados no fluxo de dados.
Editor O Editor de Tarefas de Scripts tem três páginas: Geral, Script e Expressões. Apenas as propriedades ReadOnlyVariables e ReadWriteVariables e ScriptLanguage afetam diretamente o código que podes escrever. O Editor de Transformação de Scripts tem até quatro páginas: Colunas de Entrada, Entradas e Saídas, Gestores de Scripts e Ligações. Os metadados e propriedades que configuras em cada uma destas páginas determinam os membros das classes base que são geradas automaticamente para o teu uso na programação.
Interação com o pacote No código escrito para uma tarefa Script, usas a propriedade DTS para aceder a outras funcionalidades do pacote. A propriedade Dts pertence à classe ScriptMain . No código de componentes Script, utiliza-se propriedades de acessório tipadas para aceder a certas funcionalidades do pacote, como variáveis e gestores de ligações.

O método PreExecute só pode aceder a variáveis de apenas leitura. O método PostExecute pode aceder tanto a variáveis de apenas leitura como a variáveis de leitura/escrita.

Para mais informações sobre estes métodos, consulte Codificação e Depuração do Componente de Script.
Utilização de variáveis A tarefa Script utiliza a Variables propriedade do objeto DTS para aceder a variáveis disponíveis através das propriedades e da ReadOnlyVariablesReadWriteVariables 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 utiliza propriedades de acessório tipadas da classe baseada autogerada, criadas a partir das propriedades do ReadOnlyVariables componente e ReadWriteVariables do componente. Por exemplo:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Utilização de ligações A tarefa Script utiliza a Connections propriedade do objeto DTS para aceder aos gestores de ligação 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 utiliza propriedades de acessório digitadas da classe base autogerada, criadas a partir da lista de gestores de ligação introduzidos pelo utilizador na página de Gerentes de Ligação do editor. Por exemplo:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Eventos de elevação A tarefa Script usa a Events propriedade 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 utilizando os métodos da IDTSComponentMetaData100 interface devolvidos pela ComponentMetaData propriedade. Por exemplo:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Exploração Florestal A tarefa Script utiliza o Log método do objeto DTS para registar informações para os fornecedores de registo ativados. 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 utiliza o Log método da classe base gerada automaticamente para registar informação para os fornecedores de registo ativados. 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);
Apresentação de resultados A tarefa Script utiliza tanto a TaskResult propriedade como a propriedade opcional ExecutionValue do objeto DTS para notificar o tempo de execução dos seus resultados. O componente Script é executado como parte da tarefa Fluxo de Dados e não reporta resultados usando nenhuma destas propriedades.