Criando, desenvolvendo e depurando objetos personalizados

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

Depois de escrever o código para um objeto personalizado para os Serviços de Integração, deve construir o assembly, implementá-lo e integrá-lo no SSIS Designer para o tornar disponível para uso em pacotes, e testá-lo e depurá-lo.

Etapas na Construção, Implementação e Depuração de um Objeto Personalizado para Serviços de Integração

Já escreveste a funcionalidade personalizada para o teu objeto. Agora tens de o testar e disponibilizá-lo aos utilizadores. Os passos são muito semelhantes para todos os tipos de objetos personalizados que pode criar para os Serviços de Integração.

Aqui estão os passos para o construir, implementar e testar.

  1. Assine a assembleia para ser gerada com um nome forte.

  2. Constrói o conjunto.

  3. Implemente o assembly movendo-o ou copiando-o para a pasta Integration Services apropriada.

  4. Instale o assembly na cache global assembly (GAC).

    O objeto é automaticamente adicionado à Caixa de Ferramentas.

  5. Resolver o problema da implementação, se necessário.

  6. Testa e depura o teu código.

Agora pode usar o SSIS Designer no SQL Server Data Tools (SSDT) para criar, manter e executar pacotes que visam diferentes versões do SQL Server. Para mais informações sobre o impacto desta melhoria nas suas extensões personalizadas, consulte Como suportar as suas extensões personalizadas SSIS pelo suporte multi-versão do SSDT 2015 para SQL Server 2016

Assinatura da Assembleia

Quando um assembly está destinado a ser partilhado, tem de ser instalado na cache global de assembly. Depois de o assembly ter sido adicionado à cache global assembly, o assembly pode ser usado por aplicações como o SQL Server Data Tools (SSDT). Um requisito da cache global de montagem é que a montagem deve ser assinada com um nome forte, o que garante que uma montagem é globalmente única. Uma assembleia com nome forte tem um nome totalmente qualificado que inclui o nome, cultura, chave pública e número de versão da assembleia. O runtime utiliza esta informação para localizar o conjunto e diferenciá-lo de outros montadores com o mesmo nome.

Para assinar uma assembleia com um nome forte, deve primeiro ter ou criar um par de chaves pública/privada. Este par de chaves criptográficas públicas e privadas é usado em tempo de compilação para criar um assembly com nome forte.

Para mais informações sobre nomes fortes e sobre os passos que deve seguir para assinar uma assembleia, consulte os seguintes tópicos na documentação do SDK do .NET Framework:

  • Strong-Named Assembleias

  • Criação de um Par de Chaves

  • Assinar uma Assembleia com um Nome Forte

Pode facilmente assinar o seu assembly com um nome forte no Visual Studio durante a compilação. Na caixa de diálogo Project Properties, selecione o separador Assinar. Selecione a opção Assinar o assembly e depois forneça o caminho do ficheiro chave (.snk).

Construindo a Assembleia

Após assinar o projeto, deve construir ou reconstruir o projeto ou a solução utilizando os comandos disponíveis no menu Build do SQL Server Data Tools. A sua solução pode conter um projeto separado para uma interface de utilizador personalizada, que também deve ser assinada com um nome forte e pode ser construído ao mesmo tempo.

O método mais conveniente para realizar os dois passos seguintes — implantar o assembly e instalá-lo na cache assembly global — é scriptar estes passos como um evento pós-compilação no Visual Studio. Os eventos de compilação estão disponíveis na página de compilação de Project Propriedades para um Visual Basic project, e na página de Eventos de Construção para um project C#. O caminho completo é necessário para utilitários de prompt de comandos como gacutil.exe. As aspas são necessárias tanto em caminhos que contêm espaços como em macros como $(TargetPath) que se expandem para caminhos que contêm espaços.

Aqui está um exemplo de linha de comandos de evento pós-compilação para um fornecedor de registos personalizado:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)  
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)  
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "  

Implantação do Assembly

O SSIS Designer localiza os objetos personalizados disponíveis para uso em pacotes enumerando os ficheiros encontrados numa série de pastas que são criadas quando o SQL Server Integration Services é instalado. Quando são usadas as definições de instalação padrão do SQL Server, este conjunto de pastas está localizado em C:\Program Files\Microsoft SQL Server\130\DTS. No entanto, se criares um programa de configuração para o teu objeto personalizado, deves verificar o valor da chave de registoHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath para verificar a localização dessa pasta.

Note

Para informações sobre como implementar componentes personalizados para funcionar bem com o suporte multi-versão no SQL Server Data Tools, veja Conseguir que as suas extensões personalizadas SSIS sejam suportadas pelo suporte multi-versão do SSDT 2015 para SQL Server 2016.

Podes colocar o assembly na pasta de duas formas:

  • Move ou copia o assembly compilado para a pasta apropriada depois de o compilar. (Para conveniência, pode incluir o comando copiar num Evento Pós-construção.)

  • Constrói o assembly diretamente na pasta apropriada.

As seguintes pastas de implementação em C:\Program Files\Microsoft SQL Server\130\DTS são usadas para os vários tipos de objetos personalizados:

Objeto personalizado Pasta de implantação
Tarefa Tarefas
Gestor de ligações Connections
Provedor de Logs LogProviders
Componente de fluxo de dados PipelineComponents

Note

Os assemblies são copiados para estas pastas para suportar a enumeração de tarefas disponíveis, gestores de ligações, e assim por diante. Portanto, não é necessário implementar assemblies que contenham apenas a interface personalizada para objetos personalizados nessas pastas.

Instalação do Assembly no Global Assembly Cache

Para instalar o conjunto de tarefas na cache global de montagem (GAC), use a ferramenta de linha de comandosgacutil.exe, ou arraste os assemblies para o %system%\assembly diretório. Para conveniência, pode também incluir o chamado para gacutil.exe num Evento Pós-construção.

O comando seguinte instala um componente chamado MyTask.dll no GAC usando gacutil.exe.

gacutil /iF MyTask.dll

Deve fechar e reabrir o SSIS Designer depois de instalar uma nova versão do seu objeto personalizado. Se instalou versões anteriores do seu objeto personalizado na cache assembly global, deve removê-las antes de instalar a nova versão. Para desinstalar um conjunto, execute gacutil.exe e especifique o nome do conjunto com a /u opção.

Para mais informações sobre a cache global assembly, consulte a Ferramenta Global Assembly Cache (Gactutil.exe) na .NET Framework Tools.

Resolução de Problemas da Implementação

Se o seu objeto personalizado aparecer na Toolbox ou na lista de objetos disponíveis, mas não conseguir adicioná-lo a um pacote, experimente o seguinte:

  1. Procura na cache global assembly várias versões do teu componente. Se existirem múltiplas versões do componente na cache global de assembly, o designer pode não conseguir carregar o seu componente. Apague todas as instâncias do assembly do cache global de assembly e volte a adicionar o assembly.

  2. Certifica-te de que só existe uma única instância do assembly na pasta de deployment.

  3. Atualize a Caixa de Ferramentas.

  4. Anexe Visual Studio à devenv.exe e defina um ponto de interrupção para passar pelo seu código de inicialização para garantir que não ocorrem exceções.

Testar e Depurar o Seu Código

A abordagem mais simples para depurar os métodos de execução de um objeto personalizado é iniciar dtexec.exe a partir de Visual Studio depois de construir o seu objeto personalizado e executar um pacote que utilize o componente.

Se quiser depurar os métodos de design time do componente, como o método Valide, abra um pacote que use o componente numa segunda instância de Visual Studio e anexe-o ao seu processodevenv.exe.

Se também quiseres depurar os métodos de execução do componente quando um pacote está aberto e a correr no designer SSIS, tens de forçar uma pausa na execução do pacote para que também possas ligar ao processoDtsDebugHost.exe .

Depurar os métodos de tempo de execução de um objeto anexando a dtexec.exe

  1. Assine e constrói o seu projeto na configuração Debug, implemente-o e instale-o na cache assembly global conforme descrito neste tópico.

  2. No separador Debug de Project Propriedades, selecione Iniciar programa externo como Iniciar Ação e localizedtexec.exe, que está instalado por defeito em C:\Program Files\Microsoft SQL Server\130\DTS\Binn.

  3. Na caixa de texto das opções da linha de comandos , em Opções de Inicio, introduza os argumentos da linha de comandos necessários para executar um pacote que use o seu componente. Frequentemente, o argumento da linha de comandos consiste no comutador /F[ILE] seguido do caminho e nome do ficheiro .dtsx. Para obter mais informações, consulte dtexec Utility.

  4. Defina pontos de interrupção no código-fonte, quando apropriado, nos métodos de execução do seu componente.

  5. Gere o teu projeto.

Para depurar os métodos de design de um objeto personalizado, anexando-os ao SQL Server Data Tools

  1. Assine e constrói o seu projeto na configuração Debug, implemente-o e instale-o na cache assembly global conforme descrito neste tópico.

  2. Defina pontos de interrupção no código-fonte, quando apropriado, nos métodos de design do seu objeto personalizado.

  3. Abra uma segunda instância do Visual Studio e carregue um projeto de Serviços de Integração que contenha um pacote que utilize o objeto personalizado.

  4. A partir da primeira instância de Visual Studio, associe-se à segunda instância de devenv.exe em que o pacote é carregado selecionando Anexar ao Processo no menu Depuração da primeira instância.

  5. Executa o pacote a partir da segunda instância do Visual Studio.

Para depurar métodos de tempo de execução de um objeto personalizado ligando-os ao SQL Server Data Tools

  1. Depois de completar os passos listados no procedimento anterior, force uma pausa na execução do seu pacote para que possa anexar a DtsDebugHost.exe. Pode forçar esta pausa adicionando um ponto de interrupção ao evento OnPreExecução , ou adicionando uma tarefa Script ao seu projeto e introduzindo um script que mostre uma caixa de mensagem modal.

  2. Execute o pacote. Quando a pausa ocorrer, mude para a instância do Visual Studio onde o seu projeto de código está aberto e selecione Anexar ao Processo no menu Debug. Certifica-te de anexar à instância deDtsDebugHost.exe listada como Gerida, x86 na coluna Tipo , e não apenas à instância listada como x86 .

  3. Volte ao pacote pausado e continue para além do ponto de interrupção, ou clique em OK para desligar a caixa de mensagem levantada pela tarefa Script, e continue a execução e depuração do pacote.