KB969845 - CORREÇÃO: Mensagem de erro ao executar um SQL Server 2005, SQL Server 2008 ou SQL Server 2008 R2 pacote SSIS (Integration Services) depois de instalar o .NET Framework 2.0 SP2 ou o .NET Framework 3.5 SP1: "ADO NET Source [1424]"

Aplica-se a
Microsoft SQL Server 2005 Standard Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Standard X64 Edition Microsoft SQL Server 2005 Enterprise X64 Edition Microsoft SQL Server 2005 Workgroup Edition SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup

A Microsoft distribui correções do Microsoft SQL Server 2005, Microsoft SQL Server 2008 e Microsoft SQL Server 2008 R2 como um arquivo para download. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança incluídas na versão anterior de correções do SQL Server 2005, do Microsoft SQL Server 2008 ou do SQL Server 2008 R2.

Sintomas

Considere o seguinte cenário:

  • Você executa um pacote do Microsoft SQL Server 2005, do Microsoft SQL Server 2008 ou do SQL Server 2008 R2 Integration Services (SSIS) em um computador que tenha uma das instalações do .NET Framework a seguir:

    • O .NET Framework 2.0 Service Pack 2 (SP2)
    • O .NET Framework 3.5 Service Pack 1 (SP1)
  • O pacote SSIS usa um driver ODBC de terceiros que importa dados de caractere.

No entanto, ao executar o pacote SSIS, você recebe as seguintes mensagens de erro:

Observação

[ADO NET Source [1424]] Erro: o código de erro do SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. O "componente "ADO NET Source" (1424)" falhou porque o código de erro 0x80131937 ocorrido, e o disposition da linha de erro na "coluna de saída "columnname" (Number)" especifica falha em caso de erro. Ocorreu um erro no objeto especificado do componente especificado. Pode haver mensagens de erro postadas antes disso com mais informações sobre a falha.

Erro 0xc0209029: Fluxo de Dados Tarefa: O "componente" ComponentName "(1)" falhou porque o código de erro 0x80131937 ocorrido...

[ADO NET Source [1424]] Erro: o componente "ADO NET Source" (1424) não pôde processar os dados. O componente de pipeline retornou o código de erro HRESULT 0xC0209029 de uma chamada de método.

[SSIS. Pipeline] Erro: Código de erro do SSIS DTS_E_PRIMEOUTPUTFAILED. O método PrimeOutput no componente "ADO NET Source" (1424) retornou o código de erro 0xC02090F5. O componente retornou um código de falha quando o mecanismo de pipeline chamou PrimeOutput(). O significado do código de falha é definido pelo componente, mas o erro é fatal e o pipeline parou de ser executado. Pode haver mensagens de erro postadas antes disso com mais informações sobre a falha.

Esse problema afeta os drivers ODBC que são acessados do provedor ODBC gerenciado quando as seguintes condições são verdadeiras:

  • A função ExecuteReader é chamada pelo parâmetro CommandBehavior.SequentialAccess. Essa chamada e o parâmetro são usados nas seguintes circunstâncias:

    • Quando um pacote SSIS do SQL Server 2005 lê dados de uma fonte DataReader ou quando um pacote SSIS do SQL Server 2008 lê dados de uma fonte de dados ADO.NET gerenciada.
    • A fonte de dados não está configurada para redirecionar os valores de erro e truncamento.
  • A função OdbcDataReader.IsDbNull é chamada. O pacote SSIS usa esse método para determinar se o valor em um campo é NULL ou não.

  • Uma das seguintes funções é chamada:

    • A função OdbcDataReader.GetBytes é chamada para obter determinados tipos de dados, como DT_BYTES, do provedor ODBC gerenciado.
    • A função OdbcDataReader.GetChars é chamada para obter determinados tipos de dados de cadeia de caracteres, como DT_WSTR, do provedor ODBC gerenciado.

Causa

O .NET Framework 2.0 SP2 e o .NET Framework 3.5 SP1 introduzem uma alteração no provedor ODBC gerenciado pelo qual as cadeias de caracteres são lidas do driver ODBC nativo no cenário descrito na seção "Sintomas". Devido a essa alteração, o provedor ODBC gerenciado que é chamado no driver ODBC nativo usando a função de API SQLGetData usa um buffer de tamanho 0. Drivers ODBC compatíveis não têm problemas nesta chamada. No entanto, drivers ODBC não compatíveis podem falhar nessas circunstâncias. Para um driver ODBC compatível, a função de API SQLGetData retorna SUCCESS_WITH_INFO quando um buffer de tamanho 0 é detectado. Para um driver ODBC não compatível, a chamada retorna NO_DATA.

Resolução

Informações sobre o hotfix

Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, este hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique-o somente em sistemas que apresentarem esse problema específico. Testes adicionais poderão ser realizados neste hotfix. Portanto, se esse problema não prejudica você, é aconselhável aguardar a próxima atualização de software que contenha este hotfix.

Se o hotfix estiver disponível para download, existirá uma seção "Download de hotfix disponível" na parte superior deste artigo da Base de Dados de Conhecimento. Se esta seção não aparecer, contate o Serviço de Suporte e Atendimento ao Cliente Microsoft para obter o hotfix.

Observação Se outros problemas estiverem ocorrendo ou se uma solução de problemas for necessária, talvez seja preciso criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a outras questões e problemas de suporte não qualificados para esse hotfix específico. Para obter uma lista completa dos números de telefone do Suporte e Atendimento ao Cliente da Microsoft ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:

http://support.microsoft.com/contactus/?ws=support Observação O formulário "Download de hotfix disponível" mostra os idiomas para os quais o hotfix está disponível. Se o seu idioma não for exibido, significa que não há um hotfix disponível para ele.

Pré-requisitos

Você deve ter o .NET Framework 2.0 Service Pack 2 instalado.

Informações sobre reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações do Registro

Você não precisa alterar o registro.

Informações sobre o arquivo de hotfix

Esse hotfix contém apenas os arquivos necessários para corrigir os problemas listados neste artigo. Esse hotfix pode não conter todos os arquivos necessários para atualizar completamente um produto até sua versão mais recente. A versão em inglês deste hotfix tem os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e as horas desses arquivos estão listadas no formato UTC (Tempo Universal Coordenado). Quando você visualizar as informações sobre os arquivos, elas são convertidas no horário local. Para saber a diferença entre a hora UTC e a hora local, use a guia Fuso Horário no item Data e Hora do Painel de Controle.

.NET Framework 2.0 para Windows 2000, Windows Windows Server 2003, Windows XP, versões de 32 bits

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Hora Plataforma
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

.NET Framework 2.0 para versões Windows 2000, Windows Server 2003, Windows XP e x64

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Hora Plataforma
System.data.dll 2.0.50727.4063 3,008,512 18- 23:51 x64
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86

.NET Framework 2.0 para as versões Windows 2000, Windows Server 2003, Windows XP e IA-64

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Hora Plataforma
System.data.dll 2.0.50727.4063 2,933,760 19- 05:08 x86
System.data.dll 2.0.50727.4063 3,234,816 19- 01:09 IA-64

.NET Framework 2.0 para versões de 32 bits do Windows Vista Windows Server 2008

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Horário
System.data.dll 2.0.50727.4400 2,933,760 10-Sep-2009 1,154

.NET Framework 2.0 para versões Windows Vista, Windows Server 2008 e x64

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Horário
System.data.dll 2.0.50727.4400 3,008,512 10-Sep-2009 1,154

.NET Framework 2.0 para as versões Windows Vista, Windows Server 2008 e IA-64

Nome do arquivo Versão do arquivo Tamanho do arquivo Data Horário
System.data.dll 2.0.50727.4400 3,234,816 10-Sep-2009 1,154

Solução alternativa

Como solução alternativa para esse problema, use um dos seguintes métodos.

Método 1

Edite o pacote SSIS para configurar o Redirecionamento de Erro e Truncamento na origem DataReader ou na fonte de dados ADO.NET gerenciada. Depois de editar o pacote SSIS para redirecionar a saída de erro para um destino, o pacote será executado com êxito, mesmo que nenhuma linha seja gravada no destino. Para fazer isso, siga estas etapas:

Observação As etapas a seguir pressupõem que você esteja usando um pacote SSIS do SQL Server 2005 que lê dados de uma fonte DataReader.

  1. Abra o pacote SSIS no Business Intelligence Development Studio do SQL Server.

  2. Abra a caixa de diálogo Editor Avançado para DataReader Source no designer de Fluxo de Dados.

  3. Clique na guia Propriedades de Entrada e Saída e expanda o nó Saída do DataReader na árvore Entradas e saídas .

  4. Expanda o nó Colunas de Saída .

  5. Clique em cada coluna no nó Colunas de Saída e examine a propriedade DataType. Para cada coluna cuja propriedade DataType seja DT_WSTR, DT_NTEXT, DT_BYTES ou DT_IMAGE, edite as duas propriedades a seguir:

    • Defina a propriedade ErrorRowDisposition como RD_RedirectRow.
    • Defina a propriedade TruncationRowDisposition como RD_RedirectRow.
  6. Clique em OK para salvar as alterações.

  7. No designer de Fluxo de Dados, adicione um novo destino. Por exemplo, adicione um destino de arquivo simples ou um destino do SQL Server.

  8. Use a seta vermelha da origem DataReader para conectá-lo ao destino recém-adicionado. Essa operação direcionará as linhas de erro e as linhas de truncamento para o destino, a fim de salvar as linhas de erro.

  9. Repita as etapas 1 a 8 para todas as tarefas do Fluxo de Dados que acessam colunas ODBC de cadeia de caracteres ou imagem e que falham com as mensagens de erro mencionadas na seção "Sintomas".

Método 2

Desinstale o .NET Framework 2.0 SP2 ou o .NET Framework 3.5 SP1. No entanto, não recomendamos que você desinstale um service pack porque isso sacrifica a confiabilidade, as melhorias de recursos e as otimizações de desempenho que o service pack oferece.

Para restaurar o sistema para o estado em que estava antes de instalar o .NET Framework 2.0 SP2 ou o .NET Framework 3.5 SP1, siga estas etapas:

  1. No Painel de Controle, clique duas vezes em Adicionar ou Remover Programas.

  2. Localize o Microsoft .NET Framework 3.5 SP1 e desinstale-o.

  3. Localize o Microsoft .NET Framework 3.0 SP2 e desinstale-o.

  4. Localize o Microsoft .NET Framework 2.0 SP2 e desinstale-o.

  5. Reinstale a versão original do .NET Framework 3.5. Esta etapa reinstalará o .NET Framework 2.0 SP1 e o .NET Framework 3.0 SP1. Para obter o .NET Framework 3.5, visite o seguinte site da Microsoft:
    http://www.microsoft.com/download/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=pt-br

Método 3

Entre em contato com o fornecedor do driver ODBC de terceiros para determinar se o fornecedor tem uma atualização para o driver para resolver esse problema.

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".