Partilhar via


Tratamento de erros em dados

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

Quando um componente de fluxo de dados aplica uma transformação a dados de coluna, extrai dados de fontes ou carrega dados em destinos, podem ocorrer erros. Os erros ocorrem frequentemente devido a valores de dados inesperados. Por exemplo, uma conversão de dados falha porque uma coluna contém uma cadeia de caracteres em vez de um número, uma inserção em uma coluna de banco de dados falha porque os dados são uma data e a coluna tem um tipo de dados numéricos ou uma expressão falha ao avaliar porque um valor de coluna é zero, resultando em uma operação matemática que não é válida.

Os erros normalmente se enquadram em uma das seguintes categorias:

  • Erros de conversão de dados, que ocorrem se uma conversão resultar na perda de dígitos significativos, na perda de dígitos insignificantes e no truncamento de cadeias de caracteres. Erros de conversão de dados também ocorrem se a conversão solicitada não for suportada.

  • Erros de avaliação de expressão, que ocorrem se expressões avaliadas em tempo de execução executarem operações inválidas ou se tornarem sintaticamente incorretas devido a valores de dados ausentes ou incorretos.

  • Erros de pesquisa, que ocorrem se uma operação de pesquisa não conseguir localizar uma correspondência na tabela de pesquisa.

Para consultar uma lista de erros, avisos e outras mensagens do Integration Services, consulte Referência de Erros e Mensagens do Integration Services.

Usar saídas de erro para capturar erros a nível de linha

Muitos componentes de fluxo de dados suportam saídas de erro, que permitem controlar como o componente lida com erros no nível da linha em dados de entrada e saída. Você especifica como o componente se comporta quando ocorre truncamento ou erro definindo opções em colunas individuais na entrada ou saída. Por exemplo, pode especificar que o componente deve falhar se os dados do nome do cliente estiverem truncados, mas ignorar erros noutra coluna que contenha dados menos importantes.

A saída de erro pode ser conectada à entrada de outra transformação ou carregada em um destino diferente da saída sem erro. Por exemplo, a saída de erro pode ser conectada a uma transformação de coluna derivada que fornece uma cadeia de caracteres para uma coluna que está em branco.

O diagrama a seguir mostra um fluxo de dados simples, incluindo uma saída de erro.

Fluxo de dados com saída de erro

Para obter mais informações, consulte Fluxo de dados e caminhos do Integration Services.

Caixa de diálogo Configurar saída de erro

Use a caixa de diálogo Configurar saída de erro para configurar opções de tratamento de erros para transformações de fluxo de dados que oferecem suporte a uma saída de erro.

Para saber mais sobre como trabalhar com saídas de erro, consulte Tratamento de erros em dados.

Opções

Entrada ou Saída
Verifique o nome do resultado.

Coluna
Exiba as colunas de saída selecionadas na caixa de diálogo do editor de transformação.

Erro
Se aplicável, especifique o que deve acontecer quando ocorrer um erro: ignorar a falha, redirecionar a linha ou falhar o componente.

Tópicos relacionados:Tratamento de erros em dados

Truncamento
Se aplicável, especifique o que deve acontecer quando ocorre um truncamento: ignorar a falha, redirecionar a linha ou falhar o componente.

Tópicos relacionados:Tratamento de erros em dados

Descrição
Veja a descrição da operação.

Defina esse valor para células selecionadas
Especifique o que deve acontecer com todas as células selecionadas quando ocorrer um erro ou truncamento: ignore a falha, redirecione a linha ou falhe o componente.

Candidatar-se
Aplique a opção de tratamento de erros às células selecionadas.

Os erros são falhas ou truncamentos

Os erros se enquadram em uma de duas categorias: erros ou truncamentos.

Erros. Um erro indica uma falha inequívoca e gera um resultado NULL. Tais erros podem incluir erros de conversão de dados ou erros de avaliação de expressão. Por exemplo, uma tentativa de converter uma cadeia de caracteres que contém caracteres alfabéticos em um número causa um erro. Conversões de dados, avaliações de expressão e atribuições de resultados de expressão para variáveis, propriedades e colunas de dados podem falhar devido a transmissões ilegais e tipos de dados incompatíveis. Para obter mais informações, consulte Cast (Expressão SSIS),Tipos de dados do Integration Services em expressões e Tipos de dados do Integration Services.

Truncamentos. Um truncamento é menos grave do que um erro. Um truncamento gera resultados que podem ser utilizáveis ou mesmo desejáveis. Você pode optar por tratar truncamentos como erros ou como condições aceitáveis. Por exemplo, se você estiver inserindo uma cadeia de caracteres de 15 caracteres em uma coluna com apenas um caractere de largura, poderá optar por truncar a cadeia de caracteres.

Selecione uma opção de tratamento de erros

Você pode configurar como fontes, transformações e destinos lidam com erros e truncamentos. A tabela a seguir descreve as opções.

Opção Descrição
Componente de falha A tarefa Fluxo de Dados falha quando ocorre um erro ou um truncamento. Um falhanço é a opção padrão tanto para um erro como para um truncamento.
Ignorar erro O erro ou o truncamento é ignorado e a linha de dados é direcionada para a saída da transformação ou origem.
Linha de redirecionamento O erro ou a linha de dados truncada é direcionada para a saída de erro da origem, transformação ou destino.

Obter mais informações sobre o erro

Além das colunas de dados, a saída de erro inclui as colunas ErrorCode e ErrorColumn . A coluna ErrorCode identifica o erro e a ErrorColumn contém o identificador de linhagem da coluna de erro.

Em algumas circunstâncias, o valor da coluna ErrorColumn é definido como zero. Isso ocorre quando a condição de erro afeta toda a linha em vez de uma única coluna. Um exemplo é quando uma pesquisa falha na transformação Lookup.

Estes dois valores numéricos podem ser de uso limitado sem a descrição do erro correspondente e o nome da coluna. Aqui estão algumas maneiras de obter a descrição do erro e o nome da coluna.

  • Você pode ver as descrições de erro e os nomes das colunas anexando um Visualizador de Dados à saída do erro. No Designer SSIS, clique com o botão direito do mouse na seta vermelha que leva a uma saída de erro e selecione Ativar Visualizador de Dados.

  • Você pode encontrar nomes de colunas habilitando o registro em log e selecionando o evento DiagnosticEx . Esse evento grava um mapa de coluna de fluxo de dados no log. Em seguida, pode-se procurar o nome da coluna a partir de seu identificador neste mapa de colunas. Observe que o evento DiagnosticEx não preserva espaço em branco em sua saída XML para reduzir o tamanho do log. Para melhorar a legibilidade, copie o log em um editor XML - no Visual Studio, por exemplo - que ofereça suporte à formatação XML e realce de sintaxe. Para mais informações sobre o registo, consulte Registo do Integration Services (SSIS).

    Aqui está um exemplo de um mapa de coluna de fluxo de dados.

    
    \<DTS:PipelineColumnMap xmlns:DTS="www.microsoft.com/SqlServer/Dts">  
        \<DTS:Pipeline DTS:Path="\Package\Data Flow Task">  
            \<DTS:Column DTS:ID="11" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="12" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="13" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="14" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="20" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="21" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="22" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="23" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="24" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorCode]"/>  
            \<DTS:Column DTS:ID="25" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorColumn]"/>  
            \<DTS:Column DTS:ID="31" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="32" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Product]"/>  
            \<DTS:Column DTS:ID="33" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Price]"/>  
            \<DTS:Column DTS:ID="34" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Timestamp]"/>  
        \</DTS:Pipeline>  
    \</DTS:PipelineColumnMap>  
    
    
  • Você também pode usar o componente Script para incluir a descrição do erro e o nome da coluna em colunas adicionais da saída do erro. Para obter um exemplo, consulte Melhorando um resultado de erro com o componente Script.

    • Inclua a descrição do erro em uma coluna adicional usando uma única linha de script para chamar o GetErrorDescription método da IDTSComponentMetaData100 interface.

    • Inclua o nome da coluna em uma coluna adicional usando uma única linha de script para chamar o método [Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100.GetIdentificationStringByID*] (/previous-versions/sql/sql-server-2016/mt657629(v=sql.130)) da IDTSComponentMetaData100 interface.

    Você pode adicionar o componente Script ao segmento de erro do fluxo de dados em qualquer lugar a jusante dos componentes de fluxo de dados cujos erros você deseja capturar. Normalmente, você coloca o componente Script imediatamente antes das linhas de erro serem gravadas em um destino. Dessa forma, o script procura descrições apenas para linhas com erro que são geradas. O segmento de erro do fluxo de dados pode corrigir alguns erros e deixar de gravar essas linhas em um destino de erro.

Ver também

Fluxo de Dados
Transforme dados com transformações
Conectar componentes com caminhos
Tarefa de fluxo de dados
Fluxo de Dados