A Microsoft distribui Microsoft SQL Server 2005, Microsoft SQL Server 2008, e correcções de Microsoft SQL Server 2008 R2 como um ficheiro para transferência. Uma vez que as correcções são cumulativas, cada nova versão inclui todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005, Microsoft SQL Server 2008 ou SQL Server 2008 R2 anterior.
Sintomas
Considere o seguinte cenário:
-
Executa um pacote do Microsoft SQL Server 2005, o Microsoft SQL Server 2008 ou o SQL Server 2008 R2 Integration Services (SSIS) num computador que tenha uma das seguintes instalações do .NET Framework:
-
O .NET Framework 2.0 Service Pack 2 (SP2)
-
O .NET Framework 3.5 Service Pack 1 (SP1)
-
-
O pacote SSIS utiliza um controlador ODBC de outros fabricantes que importa dados de carácter.
No entanto, quando executa o pacote SSIS, recebe as seguintes mensagens de erro:
[Origem do ADO NET [1424]] Erro: Código de erro SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR. "Componente"ADO NET fonte"(1424)" falhou porque ocorreu o código de erro 0x80131937 e a disposição de linhas de erro de "coluna de saída"columnname"(número)" Especifica uma falha no erro. Ocorreu um erro no objecto especificado do componente especificado. Pode ser registadas antes de este com mais informações sobre a falha de mensagens de erro.
Erro 0xc0209029: Tarefa de fluxo de dados: "Componente"NomeDoComponente foida "(1)" falhou porque ocorreu o código de erro 0x80131937... [Origem do ADO NET [1424]] Erro: O componente "ADO NET" origem (1424) não conseguiu processar os dados. Componente pipeline devolveu o código de erro HRESULT 0xC0209029 de uma chamada de método. [SSIS. Erro de canalização (conduta)]: código de erro SSIS DTS_E_PRIMEOUTPUTFAILED. O método PrimeOutput no código de erro devolvido (1424) do componente "ADO NET origem" 0xC02090F5. O componente devolveu um código de falha quando o motor de pipeline chamado PrimeOutput(). O significado do código de falha é definido pelo componente, mas é o erro fatal e parado de pipeline de execução. Pode ser registadas antes de este com mais informações sobre a falha de mensagens de erro.Este problema afecta os controladores ODBC acedidas a partir do fornecedor gerido pelo ODBC quando se verificam as seguintes condições:
-
A função ExecuteReader é chamada pelo parâmetro CommandBehavior . Esta chamada e o parâmetro são utilizados nas seguintes circunstâncias:
-
Quando um pacote de SQL Server 2005 SSIS lê dados a partir de uma origem de DataReader ou quando um pacote de SQL Server 2008 SSIS lê dados a partir de uma origem de dados gerida do ADO.NET.
-
A origem de dados não está configurada para redireccionar os valores de erro e truncagem.
-
-
A função OdbcDataReader.IsDbNull é chamada. O pacote SSIS utiliza este método para determinar se o valor de um campo é nulo ou não.
-
É chamada uma das seguintes funções:
-
A função OdbcDataReader.GetBytes é chamada para obter determinados tipos de dados, tais como DT_BYTES, a partir do fornecedor gerido pelo ODBC.
-
A função OdbcDataReader.GetChars é chamada para obter determinados tipos de dados de cadeia, por exemplo, DT_WSTR, a partir do fornecedor gerido pelo ODBC.
-
Causa
O .NET Framework 2.0 SP2 e .NET Framework 3.5 SP1 introduzam uma mudança de fornecedor gerido pelo ODBC através do qual cadeias são lidas a partir do controlador ODBC nativo no cenário descrito na secção "Sintomas". Devido a esta alteração, o fornecedor ODBC gerido que é chamado no controlador de ODBC nativo utilizando a função de API SQLGetData utiliza uma memória intermédia de tamanho de 0. Compatível com controladores ODBC não tiver problemas nesta chamada. No entanto, os controladores ODBC podem falhar nestas circunstâncias. Para um controlador compatível com ODBC, a função SQLGetData API devolve SUCCESS_WITH_INFO quando uma memória intermédia de tamanho 0 é detectado. Para obter um controlador ODBC não compatível, a chamada devolve: NO_DATA.
Resolução
Informações sobre correção
Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afetado por este problema, recomendamos que aguarde pela próxima atualização de software que contenha esta correção.
Se a correcção estiver disponível para transferência, existirá uma secção de "Transferência de correcção disponível" na parte superior deste artigo da Base de dados de conhecimento. Se esta secção não for apresentada, contacte o Suporte ao Cliente da Microsoft para obter a correção. Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:http://support.microsoft.com/contactus/?ws=supportNota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu idioma, é porque uma correcção não está disponível para esse idioma.
Pré-requisitos
Tem de ter o .NET Framework 2.0 Service Pack 2 instalado.
Informações sobre reinício
Não é necessário reiniciar o computador depois de aplicar esta correcção.
Informações de registo
Não tem de alterar o registo.
Informações de ficheiros de correcção
Esta correcção contém apenas os ficheiros que são necessárias para corrigir os problemas listados neste artigo. Esta correcção não pode conter de todos os ficheiros que necessita para actualizar completamente um produto para a compilação mais recente. Versão de a inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.
.NET framework 2.0 para Windows 2000, Windows Server 2003, Windows XP, versões de 32 bits
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
System.data.dll |
2.0.50727.4063 |
2,933,760 |
19- |
05:08 |
x86 |
.NET framework 2.0 para Windows 2000, Windows Server 2003, Windows XP, x64 versões
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 Windows 2000, Windows Server 2003, versões do Windows XP, IA-64
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
---|---|---|---|---|
System.data.dll |
2.0.50727.4400 |
2,933,760 |
10-Sep-2009 |
11:54 |
.NET framework 2.0 para Windows Vista, Windows Server 2008 x64 versões
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
---|---|---|---|---|
System.data.dll |
2.0.50727.4400 |
3,008,512 |
10-Sep-2009 |
11:54 |
.NET framework 2.0 para Windows Vista, Windows Server 2008, versões de IA-64
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
---|---|---|---|---|
System.data.dll |
2.0.50727.4400 |
3,234,816 |
10-Sep-2009 |
11:54 |
Solução alternativa
Para contornar este problema, utilize um dos seguintes métodos.
Método 1
Edite o pacote SSIS para configurar o erro e redireccionamento de truncagem a origem do DataReader ou na origem de dados gerida do ADO.NET. Depois de editar o pacote SSIS para redireccionar a saída de erro para um destino, o pacote será executado com êxito mesmo que não existem linhas são escritas para o destino. Para tal, siga estes passos.
Nota Os seguintes passos partem do princípio de que está a utilizar um pacote de SQL Server 2005 SSIS que leia dados a partir de uma origem de DataReader.-
Abra o pacote SSIS no SQL Server Business Intelligence Development Studio.
-
Abra a caixa de diálogo Editor avançado de origem DataReader no estruturador de fluxo de dados.
-
Clique no separador Propriedades de saída e entrada e, em seguida, expanda o nó de Saída DataReader na árvore de entradas e saídas .
-
Expanda o nó de Colunas de saída .
-
Clique em cada coluna sob o nó de Colunas de saída e, em seguida, examine a propriedade do tipo de dados . Para cada coluna cuja propriedade de tipo de dados é DT_WSTR, DT_NTEXT, DT_BYTES ou DT_IMAGE, editar as seguintes duas propriedades:
-
Defina a propriedade ErrorRowDisposition para RD_RedirectRow.
-
Defina a propriedade TruncationRowDisposition para RD_RedirectRow.
-
-
Clique em OK para guardar as alterações.
-
No estruturador de fluxo de dados, adicione um novo destino. Por exemplo, adicione um destino de ficheiro simples ou um destino do SQL Server.
-
Utilize a seta vermelha desde a nascente do DataReader ligá-lo para o destino adicionado recentemente. Esta operação irá direccionar as linhas de erro e linhas de truncagem para o destino para guardar as linhas de erro.
-
Repita os passos 1 a 8 para todas as tarefas de fluxo de dados que colunas de cadeia ou uma imagem ODBC do access e que falhar com as mensagens de erro mencionadas na secçã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 desinstale um service pack porque este sacrifices a fiabilidade, os melhoramentos de funcionalidades e optimizações de desempenho que oferece o service pack.
Para restaurar o sistema para o estado que se encontrava antes de instalar o .NET Framework 2.0 SP2 ou o .NET Framework 3.5 SP1, siga estes passos:-
No painel de controlo, faça duplo clique em Adicionar ou remover programas.
-
Localize Microsoft .NET Framework 3.5 SP1 e, em seguida, desinstale-lo.
-
Localize Microsoft .NET Framework 3.0 SP2 e, em seguida, desinstale-lo.
-
Localize Microsoft .NET Framework 2.0 SP2 e, em seguida, desinstale-lo.
-
Reinstale a versão original do .NET Framework 3.5. Este passo irá reinstalar o .NET Framework 2.0 SP1 e o .NET Framework 3.0 SP1. Para obter o .NET Framework 3.5, visite o seguinte Web site da Microsoft:
Método 3
Contacte o fornecedor do controlador de ODBC de outro fabricante para determinar se o fornecedor tem uma actualização para o controlador resolver este problema.
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".