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