Solucionando problemas de ferramentas para execução de pacotes
Integration Services inclui recursos e ferramentas que podem ser usados para solucionar problemas de pacotes quando eles são executados depois de concluídos e implantados.
No momento da criação, o SQL Server Data Tools (SSDT) 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.
Ajudar a garantir a integridade dos dados usando as transações. Para obter mais informações, consulte Transações do Integration Services.
Reiniciar os pacotes a partir do ponto de falha usando os pontos de verificação. Para saber mais, confira Restart Packages by Using Checkpoints.
Capturar e manipular os erros de pacotes com 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, confira Manipuladores de Eventos do Integration Services (SSIS).
Solucionar problemas de dados inválidos por meio das 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 Tratamento de erros em 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.
Adicione 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 para o componente script.
Adicione 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 do erro.
Crie uma tabela de pesquisa de nomes de coluna. Crie um aplicativo separado que use a API do Integration Services para iterar em cada pacote salvo, cada fluxo de dados 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.
Adicione 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).
Solucionar problemas de execução de pacotes por meio relatórios de operações
Os relatórios de operações padrão estão disponíveis no SQL Server Management Studio para ajudar você a monitorar pacotes do Integration Services que foram implantados no catálogo do Integration Services . Esses relatórios de pacote ajudam a exibir o status e o histórico do pacote e, se necessário, a identificar a causa de falhas de execução.
Para obter mais informações, consulte Solucionando problemas de relatórios para execução de pacotes.
Solucionar problemas de execução de pacotes usando exibições SSISDB
Várias exibições de banco de dados SSISDB estão disponíveis para você consultar e monitorar a execução de pacotes e outras informações de operações. Para obter mais informações, consulte Monitoramento de execuções de pacote e outras operações.
Solucionar problemas de execução de pacotes por meio dos 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.
Habilitar 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, confira Registro em log do SSIS (Integration Services) e Log do SSIS (Integration Services).
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 Solução de problemas de conectividade de pacotes de ferramentas.
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:
Criar uma tabela pai que registra 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.
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 Audit Transformation. 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 Derived Column Transformation.
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 Projeto REAL: práticas de design ETL de Business Intelligence.
Solucionar problemas de execução de pacotes por meio de arquivos de despejo de depuração
No Integration Services, você pode criar arquivos de despejo de depuração que fornecem informações sobre a execução de um pacote. Para obter mais informações, consulte Generating Dump Files for Package Execution.
Solucionar problemas de validação em tempo de execução
Às vezes, você não poderá se conectar às suas fontes de dados ou validar partes de seu pacote até que as tarefas anteriores no pacote tenham sido executadas. Integration Services inclui os seguintes recursos para ajudar a evitar os erros de validação que resultam dessas 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 comoTrue
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 propriedadeDelayValidation
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 comofalse
. Entretanto, quando o valor dessa propriedade forfalse
, o componente não reconhecerá as alterações para o metadados de fontes de dados externas. Ao definir comotrue
, 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.
Solucionar problemas de permissões em tempo de execução
Se você encontrar erros ao tentar executar os pacotes implantados usando o SQL Server Agent, as contas usadas pelo Agent poderão 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 por meio de trabalhos do SQL Server Agent, consulte Trabalhos do SQL Server Agent para pacotes.
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.
Solucionar problemas de 64 bits
- Alguns provedores de dados não estão disponíveis em plataformas de 64 bits. Em particular, o Provedor OLE DB do Microsoft Jet, 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.
Solucionar problemas de erros sem uma descrição
Se você encontrar um erro do Integration Services que não seja acompanhado de uma descrição, localize a descrição no Referência de mensagens e erros do Integration Services e procure o erro pelo número. No momento, a lista não inclui informações para solução de problemas.
Related Tasks
Configurar uma saída de erro em um componente de fluxo de dados