Solucionando problemas de execução do pacote

O Integration Services inclui recursos e ferramentas que podem ser usados para solucionar problemas dos pacotes quando eles são executados depois de concluídos e implantados.

No momento da criação, o Business Intelligence Development Studio fornece pontos de interrupção para pausar a execução do pacote, a janela Progresso, e os visualizadores de dados para visualizar como os dados passam pelo fluxo de dados. No entanto, esses recursos não estarão disponíveis quando você estiver executando pacotes que foram implantados. As principais técnicas para a solução problemas de pacotes implantados são as seguintes:

  • Capturar e manipular os erros de pacote usando os manipuladores de eventos.

  • Capturar dados inválidos usando saídas de erro.

  • Controlar as etapas de execução do pacote usando os logs.

Você também pode usar as seguintes dicas e técnicas para evitar problemas ao executar os pacotes.

Capturando e manipulando os erros de pacote usando os manipuladores de eventos

Você pode responder a muitos eventos gerados pelo pacote e os objetos no pacote usando os manipuladores de eventos.

  • Criar um manipulador de eventos para o evento OnError. No manipulador de eventos, você pode usar uma tarefa Enviar Email para notificar um administrador sobre a falha, usar uma tarefa Script e a lógica personalizada para obter informações do sistema para a solução de problemas, ou limpar os recursos temporários ou as saídas incompletas. Para obter mais informações, consulte Manipuladores de eventos do Integration Services e Adicionando manipuladores de eventos de pacote.

Solucionando problemas de dados inválidos usando as saídas de erro

Você pode usar a saída de erro disponível em muitos componentes de fluxo de dados para direcionar as linhas com erros a outro destino para análise posterior.

  • Capturar dados inválidos usando saídas de erro. Envie as linhas que contêm erros a outro destino como uma tabela de erros ou um arquivo de texto. A saída de erro adiciona linhas automaticamente a duas colunas que contém o número do erro que fez com que a linha fosse rejeitada e a ID da coluna na qual o erro ocorreu. Para obter mais informações, consulte Manipulando erros no fluxo de dados e Como configurar uma saída de erro em um componente de fluxo de dados.

  • Adicionar informações amigáveis às saídas de erro. A análise da saída de erro pode tornar-se uma tarefa mais fácil se você adicionar outras informações descritivas além dos dois identificadores numéricos que são fornecidos pela saída de erro.

    Adicionar a descrição do erro. É fácil procurar pela descrição do erro usando um componente Script. Para obter mais informações, consulte Aprimorando uma saída de erro com o componente Script.

    Adicionar o nome da coluna de erro. A pesquisa pelo nome de coluna que corresponde à ID da coluna salva pela saída de erro não pode ser feita facilmente no componente Script e requer etapas adicionais. Cada ID de coluna em um fluxo de dados é exclusivo dentro da tarefa Fluxo de Dados e persiste no pacote no momento da criação. A abordagem a seguir é uma sugestão para adicionar o nome de coluna à saída de erro:

    1. Criar uma tabela de pesquisa de nomes de coluna. Crie outro aplicativo que faça uso do API Integration Services para iterar com cada pacote salvo, cada fluxo no pacote, cada objeto no fluxo de dados e cada entrada e saída no objeto de fluxo de dados. O aplicativo deve persistir a ID de coluna e o nome de cada coluna a uma tabela de pesquisa, com a ID da tarefa Fluxo de Dados pai e a ID do pacote.

    2. Adicionar o nome da coluna à saída. Adicione uma transformação Pesquisa à saída de erro que pesquise pelo nome da coluna na tabela de pesquisa criada na etapa anterior. A pesquisa pode usar a ID da coluna na saída de erro, a ID do pacote (disponível na variável System::PackageID do sistema) e a ID da tarefa Fluxo de Dados (disponível na variável System::TaskID do sistema).

Solucionando problemas de execução do pacote usando os logs

Você pode controlar muitas ocorrências em seus pacotes de execução ativando os logs. Os provedores de logs capturam as informações sobre os eventos especificados para análise posterior e salvam essas informações em uma tabela de banco de dados, um arquivo simples, um arquivo XML ou outro formato de saída suportado.

  • Ativar logs. Você pode refinar a saída de logs selecionando apenas os eventos e apenas os itens de informação que deseja capturar. Para obter mais informações, consulte Provedores de log do Integration Services e Implementando log em pacotes.

  • Selecione o evento de Diagnóstico do pacote para solucionar problemas do provedor. Existem mensagens de log que ajudam a solucionar os problemas de interação do pacote com as fontes de dados externas. Para obter mais informações, consulte a seção, Solucionando problemas com provedores de dados externos, neste tópico.

  • Aprimorar a saída de log padrão. Normalmente, o log acrescenta linhas ao destino de log sempre que um pacote é executado. Embora cada linha de saída do log identifique o pacote de acordo com seu nome e identificador exclusivos, além de identificar também a execução do pacote por um ExecutionID exclusivo, uma quantidade muito grande de saídas de logs em uma lista simples pode dificultar a análise.

    A abordagem a seguir é uma sugestão para aprimorar a saída de log padrão e facilitar a geração de relatórios:

    1. Criar uma tabela pai que registre todas as execuções de um pacote. Essa tabela pai tem apenas uma linha para cada execução do pacote e usa o ExecutionID para estabelecer um vínculo com os registros filho na tabela de log Integration Services. Você pode usar uma tarefa Executar SQL no início de cada pacote para criar essa nova linha e para registrar a hora de início. Em seguida, poderá usar outra tarefa Executar SQL no final do pacote para atualizar a linha com a hora de término, a duração e o status.

    2. Adicionar informações de auditoria ao fluxo de dados. Você pode usar a transformação Auditoria para adicionar informações às linhas no fluxo de dados sobre a execução do pacote que criou ou modificou cada linha. A transformação Auditoria disponibiliza nove partes de informações, incluindo PackageName e ExecutionInstanceGUID. Para obter mais informações, consulte Transformação Auditoria. Se você tiver informações personalizadas que gostaria de incluir nas linhas para fins de auditoria, poderá adicioná-las às linhas no fluxo de dados usando uma transformação Coluna Derivada. Para obter mais informações, consulte Transformação Coluna Derivada.

    3. Considerar a captura de dados de contagem de linhas. Considere a criação de tabelas separadas para as informações de contagem de linhas, onde cada instância de execução de pacote possa ser identificada por ExecutionID. Use a transformação Contagem de Linhas para salvar a contagem de linhas em uma série de variáveis em pontos críticos no fluxo de dados. Após o término do fluxo de dados, use uma tarefa Executar SQL para inserir as séries de valores em uma linha na tabela para análise e geração de relatório posterior.

    Para obter mais informações sobre essa abordagem, consulte a seção "ETL Auditing and Logging" no white paper da Microsoft intitulado Project REAL: Business Intelligence ETL Design Practices.

Solucionando problemas de execução de pacotes usando arquivos de despejo de depuração

No Integration Services, você pode criar arquivos de despejo de depuração que forneçam informações sobre a execução de um pacote. Para obter mais informações, consulte Trabalhando com arquivos de despejo de depuração.

Solucionando problemas de validação de tempo de execução

Em alguns momentos você não conseguirá conectar-se às suas fontes de dados ou não conseguirá validar partes de seu pacote até que as tarefas anteriores do pacote tenham sido executadas. O Integration Services inclui os seguintes recursos para ajudá-lo a evitar os erros de validação que, de outro modo, resultariam nessas condições:

  • Configurar uma propriedade DelayValidation em elementos de pacote que não são válidos quando o pacote estiver carregado. DelayValidation pode ser definida como True em elementos do pacote cujas configurações não são válidas para evitar erros de validação quando o pacote for carregado. Por exemplo, você pode ter uma tarefa Fluxo de Dados que usa uma tabela de destino que não existe até que uma tarefa Executar SQL crie a tabela no tempo de execução. A propriedade DelayValidation pode ativada no nível do pacote ou no nível das tarefas individuais e contêineres que o pacote inclui.

    A propriedade DelayValidation pode ser definida em uma tarefa de Fluxo de Dados, mas não em componentes de fluxo de dados individuais. Você pode conseguir um efeito semelhante definindo a propriedade ValidateExternalMetadata dos componentes de fluxo de dados individuais como false. Entretanto, quando o valor dessa propriedade for false, o componente não reconhecerá as alterações para o metadados de fontes de dados externas. Ao definir como true, a propriedade ValidateExternalMetadata poderá ajudar a evitar os problemas de bloqueio causados por bloqueios no banco de dados, especialmente quando o pacote estiver usando as transações.

Solucionando problemas de permissões de tempo de execução

Se você encontrar erros ao tentar executar os pacotes implantados usando o SQL Server Agent, as contas usadas pelo Agent podem não ter as permissões necessárias. Para obter informações sobre como solucionar problemas de pacotes executados nos trabalhos do SQL Server Agent, consulte Um pacote SSIS não é executado ao chamar o pacote SSIS a partir de uma etapa de trabalho do SQL Server Agent. Para obter mais informações sobre como executar pacotes a partir de trabalhos do SQL Server Agent, consulte Agendando a execução de pacotes SSIS no SQL Server Agent e Como executar um pacote.

Para se conectar a fontes de dados do Excel ou do Access, o SQL Server Agent requer uma conta com permissão para ler, gravar, criar e excluir arquivos temporários na pasta especificada pelas variáveis de ambiente TEMP e TMP.

Solucionando problemas em sistemas de 64 bits

Ao encontrar erros em um servidor de 64 bits com os pacotes que são executados com êxito no modo de 32 bits ou em servidores de 32 bits, considere os problemas mais comuns descritos a seguir. Para obter mais informações, consulte Considerações do Integration Services em computadores de 64 bits.

  • Alguns provedores de dados não estão disponíveis em plataformas de 64 bits. Em particular, o Microsoft Jet OLE DB Provider, que é necessário para conectar as fontes de dados do Excel ou do Access, não está disponível em versões de 64 bits.

  • Pacotes do DTS não podem ser executados no modo de 64 bits. Se os seus pacotes usam a tarefa Executar Pacote do DTS 2000 para executar os pacotes do DTS (Data Transformation Services) do SQL Server 2000, o pacote deve ser executado em modo de 32 bits. Não há suporte para o tempo de execução de 64 bits para pacotes do DTS.

Solucionando problemas de erros sem uma descrição

Se você encontrar um erro do Integration Services que não acompanhe uma descrição, localize a descrição em Referência de mensagens e erros do Integration Services procurando o erro pelo seu número. No momento, a lista não inclui informações para solução de problemas.

Í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.