Partilhar via


Codificando e depurando o componente Script

No SSIS Designer, o componente Script tem dois modos: modo de design de metadados e modo de design de código. Quando você abre o Editor de Transformação Scripts, o componente digita o modo de design de metadados no qual você configura metadados e define propriedades do componente. Depois de definir as propriedades do componente Script e configurar a entrada e as saídas em modo de design de metadados, você pode alternar para o modo de design de código para gravar seu script personalizado. Para obter mais informações sobre o modo de design de metadados e o modo de design de código, consulte Configurando o componente Script no Editor de Componentes de Script.

Escrevendo o Script em modo de design de código

Ambiente de desenvolvimento do componente Script

Para gravar seu script, clique em Editar Script na página Script do Editor de Transformação Scripts para abrir o Microsoft Visual Studio Tools for Applications (VSTA) IDE. O VSTA IDE inclui todos os recursos padrão do ambiente Visual Studio.NET, como o editor Visual Studio codificado por cores, o IntelliSense e o Pesquisador de Objetos.

O código de Script é escrito em Microsoft Visual Basic ou em Microsoft Visual C#. Você especifica a linguagem de script definindo a propriedade ScriptLanguage no Editor de Transformação Scripts. Caso prefira usar outra linguagem de programação, você pode desenvolver um assembly personalizado na linguagem de sua escolha e chamar sua funcionalidade do código no componente Script.

O script criado no componente Script é armazenado na definição do pacote. Não há arquivo de script separado. Portanto, o uso do componente Script não afeta a implantação do pacote.

ObservaçãoObservação

Enquanto você projeta o pacote, o código de script é gravado temporariamente em um arquivo de projeto. Como o fato de armazenar informações confidenciais em um arquivo representa um potencial risco à segurança, recomendamos não incluir informações, como senhas, no código de script.

Por padrão, Option Strict fica desabilitado no IDE.

Estrutura do projeto do componente Script

O poder do componente Script reside em poder gerar código de infraestrutura que reduz a quantidade de códigos que você deve gravar. Esse recurso se baseia no fato de que entradas e saídas e suas colunas e propriedades são fixadas e conhecidas com antecedência. Portanto, qualquer alteração subsequente que você faça nos metadados do componente poderá invalidar o código que você gravou. Isso causa erros de compilação durante a execução do pacote.

Itens e classes de projeto no projeto do componente Script

Quando você alterna para o modo de design de código, o VSTA IDE abre e exibe o item de projeto ScriptMain. O item de projeto ScriptMain contém a classe ScriptMain editável, que serve como ponto de entrada para o script e fica onde você grava seu código. Os elementos de código na classe variam dependendo da linguagem de programação que você selecionou para a tarefa Script.

O projeto de script contém dois itens de projeto somente leitura adicionais gerados automaticamente:

  • O item de projeto ComponentWrapper contém três classes:

    • A classe UserComponent, que herda de ScriptComponent e contém os métodos e propriedades que você vai usar para processar dados e interagir com o pacote. A classe ScriptMain herda da classe UserComponent.

    • Uma classe de coleção Connections que contém referências às conexões selecionadas na página Gerenciador de Conexões do Editor de Transformação Scripts.

    • Uma classe de coleção Variables que contém referências às variáveis inseridas nas propriedades ReadOnlyVariable e ReadWriteVariables na página Script do Editor de Transformação Scripts.

  • O item de projeto BufferWrapper contém uma classe que herda do ScriptBuffer para cada entrada e saída configurada na página Entradas e Saídas do Editor de Transformação Scripts. Cada uma dessas classes contém propriedades de acessador digitadas que correspondem às colunas de entrada e saída configuradas e os buffers de fluxo de dados que contêm as colunas.

Para obter mais informações sobre como usar esses objetos, métodos e propriedades, consulte Compreendendo o Component Object Model Script. Para obter informações sobre como usar os métodos e propriedades dessas classes em um tipo específico de componente Script, consulte a seção Exemplos de componentes Script adicionais. Os tópicos de exemplo também contêm exemplos de código completos.

Quando você configura o componente Script como uma transformação, o item de projeto ScriptMain contém o seguinte código gerado automaticamente. O modelo de código também fornece uma visão geral do componente Script e informações adicionais sobre como recuperar e manipular objetos SSIS, como variáveis, eventos e conexões.

' Microsoft SQL Server Integration Services Script Component
' Write scripts using Microsoft Visual Basic 2008.
' ScriptMain is the entry point class of the script.

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
    Inherits UserComponent

    Public Overrides Sub PreExecute()
        MyBase.PreExecute()
        '
        ' Add your code here for preprocessing or remove if not needed
        '
    End Sub

    Public Overrides Sub PostExecute()
        MyBase.PostExecute()
        '
        ' Add your code here for postprocessing or remove if not needed
        ' You can set read/write variables here, for example:
        ' Me.Variables.MyIntVar = 100
        '
    End Sub

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        '
        ' Add your code here
        '
    End Sub

End Class
/* Microsoft SQL Server Integration Services user script component
*  Write scripts using Microsoft Visual C# 2008.
*  ScriptMain is the entry point class of the script.*/

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{

    public override void PreExecute()
    {
        base.PreExecute();
        /*
          Add your code here for preprocessing or remove if not needed
        */
    }

    public override void PostExecute()
    {
        base.PostExecute();
        /*
          Add your code here for postprocessing or remove if not needed
          You can set read/write variables here, for example:
          Variables.MyIntVar = 100
        */
    }

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        /*
          Add your code here
        */
    }

}

Itens de projeto adicionais no projeto do componente Script

O projeto do componente Script pode incluir itens diferentes do item ScriptMain padrão. Você pode adicionar classes, módulos, arquivos de código e pastas ao projeto, e você pode usar pastas para organizar grupos de itens.

Todos os itens que você adiciona persistem dentro do pacote.

Referências no projeto do componente Script

Você pode acrescentar referências a assemblies gerenciados clicando com o botão direito no projeto da tarefa Script no Explorador de Projeto e clicando em Adicionar Referência. Para obter mais informações, consulte Referenciando outros assemblies em soluções de script.

ObservaçãoObservação

Você pode exibir as referências do projeto no VSTA IDE em Modo de Exibição de Classe ou em Explorador de Projeto. É possível abrir qualquer uma dessas janelas no menu Exibir. Você pode adicionar uma referência nova no menu Projeto, de Explorador de Projeto ou de Modo de Exibição de Classe.

Interagindo com o pacote no componente Script

O script personalizado que você grava no componente Script pode acessar e usar variáveis e gerenciadores de conexões do pacote que os contém através de acessadores de tipo mais acentuado nas classes base geradas automaticamente. Contudo, você deve configurar as variáveis e os gerenciadores de conexões antes de digitar o modo de design de código, se quiser disponibilizá-los para seu script. Você também pode gerar eventos e executar log do código do componente Script.

Os itens de projeto gerados automaticamente no projeto do componente Script fornecem os seguintes objetos, métodos e propriedades para interagir com o pacote.

Recurso do Pacote

Método de Acesso

Variáveis

Use as propriedades nomeadas e digitadas do acessador na classe de coleção Variables no item de projeto ComponentWrapper, expostas através da propriedade Variables da classe ScriptMain.

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.

Conexões

Use as propriedades nomeadas e digitadas do acessador na classe de coleção Connections no item de projeto ComponentWrapper, expostas através da propriedade Connections da classe ScriptMain.

Eventos

Gere eventos usando a propriedade ComponentMetaData da classe ScriptMain e os métodos Fire<X> da interface IDTSComponentMetaData100.

Log

Execute o registro em log usando o método Log da classe ScriptMain.

Depurando o componente Script

Para depurar o código no seu componente Script, defina pelo menos um ponto de interrupção no código e, depois, feche o VSTA IDE para executar o pacote no SSDT (SQL Server Data Tools). Quando a execução do pacote insere o componente Script, o VSTA IDE é reaberto e exibe seu código em modo somente leitura. Depois que a execução atingir seu ponto de interrupção, você poderá examinar valores de variáveis e passar pelo código restante.

ObservaçãoObservação

Você não pode depurar um componente Script quando executa-o como parte de um pacote filho que é executado a partir de uma tarefa Executar Pacote. Nessas circunstâncias, os pontos de interrupção definidos no componente Script no pacote filho são desconsiderados. Você pode depurar o pacote filho normalmente, executando-o separadamente.

ObservaçãoObservação

Quando você depura um pacote que contém vários componentes Script, o depurador depura um componente Script. O sistema poderá depurar outro componente Script se o depurador for concluído, como no caso de um contêiner Loop Foreach ou Loop For.

Você também pode monitorar a execução do componente Script usando os métodos seguintes:

  • Interrompa a execução e exiba uma mensagem modal usando o método MessageBox.Show no namespace System.Windows.Forms. (Remova esse código após concluir o processo de depuração).

  • Gere eventos para mensagens informativas, advertências e erros. Os métodos FireInformation, FireWarning e FireError exibem a descrição do evento na janela Saída do Visual Studio. Porém, o método FireProgress, o método Console.Write e o método Console.WriteLine não exibem qualquer informação na janela Saída. Mensagens do evento FireProgress aparecem na guia Progresso do SSIS Designer. Para obter mais informações, consulte Gerando eventos no componente Script.

  • Eventos de log ou mensagens definidas pelo usuário para provedores de log habilitados. Para obter mais informações, consulte Registrando o componente Script.

Caso queira apenas examinar a saída de um componente Script configurado como uma origem ou uma transformação, sem salvar os dados em um destino, você pode parar o fluxo de dados com um Transformação Contagem de Linhas e anexar um visualizador de dados à saída do componente Script. Para obter informações sobre visualizadores de dados, consulte Depurando fluxo de dados.

Nesta seção

Para obter mais informações sobre como codificar o componente Script, consulte os tópicos seguintes nesta seção.

Recursos externos

Ícone do Integration Services (pequeno) Mantenha-se atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, assim como soluções selecionadas pela comunidade, visite a página do Integration Services no MSDN:


Para receber uma notificação automática dessas atualizações, assine os RSS feeds disponíveis na página.

Consulte também

Conceitos

Configurando o componente Script no Editor de Componentes de Script