Configurando o componente Script no Editor de Componentes de Script

Para escrever um código personalizado no componente Script, primeiro selecione o tipo de componente de fluxo de dados a ser criado (de origem, transformação ou destino) e, depois, configure metadados e propriedades do componente no Editor de Transformação Scripts.

Selecionando o tipo de componente a ser criado

Quando você adiciona um componente Script ao painel Fluxo de Dados do Designer SSIS, a caixa de diálogo Selecionar Tipo de Componente do Script aparece. Pré-configure o componente como uma origem, transformação ou destino. Depois que você fizer essa seleção inicial, poderá continuar configurando o componente no Editor de Transformação Scripts.

Para definir a linguagem de script padrão para o componente Script, use a opção Linguagem de scripts na página Geral da caixa de diálogo Opções. Para obter mais informações, consulte Página Geral.

Compreendendo os dois modos de tempo de design

No Designer SSIS, 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 insere o modo de design de metadados. Nesse modo, você pode selecionar colunas de entrada, e adicionar ou configurar saídas e colunas de saída, mas não pode escrever código. Depois de configurar os metadados do componente, você poderá alternar para o modo de design de código para escrever o script.

Quando você alterna para o modo de design de código, clicando em Editar Script, o componente Script bloqueia metadados para impedir mudanças adicionais e, depois, gera automaticamente código de base a partir dos metadados das entradas e saídas. Depois que o código gerado automaticamente estiver concluído, você poderá digitar seu código personalizado. Seu código usa as classes base geradas automaticamente para processar linhas de entrada, acessar buffers e colunas nos buffers, além de recuperar gerenciadores de conexões e variáveis do pacote, tudo como objetos fortemente tipados.

Depois de digitar seu código personalizado em modo de design de código, você pode alternar para o modo de design de metadados. Isso não exclui códigos digitados; porém, as alterações subseqüentes nos metadados levam à regeneração da classe base. Posteriormente, a validação de seu componente poderá falhar porque os objetos referenciados por seu código personalizado não existem mais ou foram modificados. Nesse caso, corrija o código manualmente para permitir sua compilação com êxito em relação à classe base regenerada.

Configurando o componente em modo do design de metadados

No modo do design de metadados, você pode selecionar colunas de entrada, e adicionar e configurar saídas e colunas de saída, mas não pode escrever código. Depois de configurar os metadados do componente, alterne para o modo de design de código para escrever o script.

As propriedades a serem configuradas no editor personalizado dependem do uso do componente Script. O componente Script pode ser configurado como uma origem, uma transformação ou um destino. Dependendo de como o componente é usado, ele dá suporte a uma entrada ou a saídas, ou a ambas. O código personalizado que você escreverá processa as linhas e colunas de entrada e saída.

Página Colunas de Entrada do Editor de Transformação Scripts

A página Colunas de Entrada do Editor de Transformação Scripts é exibida para transformações e destinos, mas não para origens. Nessa página, você seleciona as colunas de entrada disponíveis a serem disponibilizadas para seu script personalizado, e especifica o acesso somente leitura ou de leitura/gravação a elas.

No projeto de código que será gerado com base nesses metadados, o item de projeto BufferWrapper contém uma classe para cada entrada. Essa classe contém propriedades de acessador tipado para cada coluna de entrada selecionada. Por exemplo, se você selecionar uma coluna de inteiros CustomerID e uma coluna de cadeia de caracteres CustomerName de uma entrada nomeada CustomerInput, o item de projeto BufferWrapper conterá uma classe CustomerInput que deriva de ScriptBuffer, e a classe CustomerInput exporá uma propriedade de inteiro nomeada CustomerID e uma propriedade de cadeia de caracteres nomeada CustomerName. Essa convenção permite escrever código com verificação de tipo, conforme mostrado a seguir:

Dim currentCustomerID as Integer = CustomerInput.CustomerID
Dim currentCustomerName as String = CustomerInput.CustomerName

Para obter mais informações sobre como configurar colunas de entrada para um tipo específico de componente de fluxo de dados, consulte o exemplo apropriado em Desenvolvendo tipos específicos de componentes Script.

Página Entradas e Saídas do Editor de Transformação Scripts

A página Entradas e Saídas do Editor de Transformação Scripts é exibida para origens, transformações e destinos. Nessa página, você adiciona, remove e configura entradas, saídas e colunas de saída a serem usadas no seu script personalizado, dentro das seguintes limitações:

  • Quando usado como uma origem, o componente Script não possui entrada e dá suporte a várias saídas.

  • Quando usado como uma transformação, o componente Script dá suporte a uma entrada e a várias saídas.

  • Quando usado como um destino, o componente Script dá suporte a uma entrada e não possui saídas.

No projeto de código que será gerado com base nesses metadados, o item de projeto BufferWrapper contém uma classe para cada entrada e saída. Por exemplo, se você criar uma saída nomeada CustomerOutput, o item de projeto BufferWrapper conterá uma classe CustomerOutput que deriva de ScriptBuffer, e a classe CustomerOutput conterá propriedades do acessador tipado para cada coluna de saída criada.

Você só pode configurar colunas de saída na página Entradas e Saídas. Você pode selecionar colunas de entrada para transformações e destinos na página Colunas de Entrada. As propriedades de acessador tipado criadas para você no item de projeto BufferWrapper serão somente para gravação em colunas de saída. As propriedades do acessador para colunas de entrada serão somente leitura ou de leitura/gravação, dependendo do tipo de uso selecionado para cada coluna na página Colunas de Entrada.

Para obter mais informações sobre como configurar entradas e saídas para um tipo específico de componente de fluxo de dados, consulte o exemplo apropriado em Desenvolvendo tipos específicos de componentes Script.

ObservaçãoObservação

Embora não seja possível configurar diretamente uma saída como uma saída de erro no componente Script para manipular automaticamente as linhas de erro, você pode reproduzir a funcionalidade de uma saída de erro criando uma saída adicional e usando o script para direcionar linhas a essa saída quando apropriado. Para obter mais informações, consulte Simulando uma saída de erro para o componente Script.

Propriedades de saída ExclusionGroup e SynchronousInputID

A propriedade ExclusionGroup possui um valor diferente de zero somente em transformações com saídas síncronas, onde seu código executa a filtragem ou cria ramificações e direciona cada linha para uma das saídas que compartilham o mesmo valor ExclusionGroup diferente de zero. Por exemplo, a transformação pode direcionar linhas para a saída padrão ou para uma saída de erro. Ao criar saídas adicionais para este cenário, certifique-se de que tenha definido o valor da propriedade SynchronousInputID como o inteiro que corresponde ao ID da entrada do componente.

A propriedade SynchronousInputID só tem um valor diferente de zero em transformações com saídas síncronas. Se o valor dessa propriedade for zero, significa que a saída é assíncrona. Para uma saída síncrona, em que linhas são transmitidas às saídas selecionadas sem adicionar novas linhas, essa propriedade deve conter a ID da entrada do componente.

ObservaçãoObservação

Quando o Editor de Transformação de Scripts cria a primeira saída, ele define a propriedade SynchronousInputID da saída para o ID da entrada do componente. Porém, quando o editor cria saídas subseqüentes, ele define as propriedades SynchronousInputID dessas saídas como zero.

Se você estiver criando um componente com saídas síncronas, cada saída deverá ter sua propriedade SynchronousInputID definida como a ID da entrada do componente. Portanto, cada saída criada pelo editor depois da primeira saída precisa mudar seu valor SynchronousInputID de zero para a ID da entrada do componente.

Se você estiver criando um componente com saídas assíncronas, cada saída deverá ter sua propriedade SynchronousInputID definida como zero. Portanto, a primeira saída precisa alterar seu valor SynchronousInputID da ID da entrada do componente para zero.

Para obter um exemplo de como direcionar linhas para uma das duas saídas síncronas no componente Script, consulte Criando uma transformação síncrona com o componente Script.

Nomes de objeto em script gerado

O componente Script analisa os nomes de entradas e saídas, além dos nomes de colunas nas entradas e saídas. Com base nesses nomes, ele gera classes e propriedades no item de projeto BufferWrapper. Se os nomes encontrados incluírem caracteres que não pertencem às categorias Unicode UppercaseLetter, LowercaseLetter, TitlecaseLetter, ModifierLetter, OtherLetter ou DecimalDigitLetter, os caracteres inválidos serão descartados nos nomes gerados. Por exemplo, espaços são descartados; portanto, quando duas colunas de entrada têm os nomes FirstName e [First Name], elas são interpretadas como ambas contendo o nome de coluna FirstName, com resultados imprevisíveis. Para evitar essa situação, os nomes das entradas e saídas e das colunas de entrada e saída usados pelo componente Script devem conter apenas caracteres nas categorias Unicode listadas nessa seção.

Página Script do Editor de Transformação Scripts

Na página Script do Editor da Tarefa Script, atribua um nome exclusivo e uma descrição para a tarefa Script. Você também pode atribuir valores para as propriedades a seguir.

ObservaçãoObservação

No SQL Server 2008 Integration Services (SSIS), todos os scripts são pré-compilados. Em versões anteriores, você especificava se os scripts eram pré-compilados definindo uma propriedade Precompile para a tarefa.

Propriedade ValidateExternalMetadata

O valor booleano da propriedade ValidateExternalMetadata especifica se o componente deve executar a validação em relação a fontes de dados externas no tempo de design, ou se ele deve adiar a validação até o tempo de execução. Por padrão, o valor dessa propriedade é True; ou seja, os metadados externos são validados em tempo de design e em tempo de execução. Talvez você queira definir o valor dessa propriedade como False quando uma fonte de dados externa não está disponível no tempo de design: por exemplo, quando o pacote baixa a origem ou cria o destino apenas em tempo de execução.

Propriedades ReadOnlyVariables e ReadWriteVariables

Você pode inserir listas de variáveis existentes, delimitadas por vírgulas, como os valores dessas propriedades a fim de disponibilizar as variáveis para acesso somente leitura ou leitura/gravação dentro do código de componente Script. Variáveis são acessadas em código através das propriedades ReadOnlyVariables e ReadWriteVariables da classe base gerada automaticamente. Para obter mais informações, consulte Usando variáveis no componente Script.

ObservaçãoObservação

Nomes de variáveis diferenciam maiúsculas de minúsculas.

ScriptLanguage

Você pode selecionar MicrosoftVisual Basic 2008 ou MicrosoftVisual C# 2008 como a linguagem de programação do componente Script.

Botão Editar Script

O botão Editar Script abre o MicrosoftVisual Studio Tools for Applications (VSTA) IDE no qual você escreve seu script personalizado. Para obter mais informações, consulte Codificando e depurando o componente Script.

Página Gerenciadores de Conexões do Editor de Transformação Scripts

Na página Gerenciadores de Conexões do Editor de Transformação Scripts, você adiciona e remove gerenciadores de conexões a serem usados no seu script personalizado. Em geral, você precisa referenciar gerenciadores de conexões quando cria um componente de origem ou destino.

No projeto de código que será gerado com base nesses metadados, o item de projeto ComponentWrapper contém uma classe de coleção Connections que possui uma propriedade de acessador tipado para cada gerenciador de conexões selecionado. Cada propriedade de acessador tipado possui nome idêntico ao do próprio gerenciador de conexões e retorna uma referência ao gerenciador de conexões como uma instância de IDTSConnectionManager100. Por exemplo, se você adicionou um gerenciador de conexões nomeado MyADONETConnection na página Gerenciadores de Conexões do editor, poderá obter uma referência ao gerenciador de conexões no seu script através do seguinte código:

Dim myADONETConnectionManager As IDTSConnectionManager100 = _
    Me.Connections.MyADONETConnection

Para obter mais informações, consulte Conectando-se a fontes de dados no componente de Script.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

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

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