Sintomas
Quando executa uma consulta para selecionar dados de um servidor ligado à Oracle utilizando o fornecedor OLE DB no Microsoft SQL Server 2012 ou SQL Server 2014, os valores na coluna do tipo NÚMERO podem ser truncados no resultado da consulta.
Causa
Este problema ocorre porque o tipo Oracle NUMBER com precisão/escala não declarada pode não ter um mapeamento claro de 1:1 para um tipo de dados SQL Server. Antes do SQL Server 2012 SP2 CU2, o SQL Server mapeia esses valores em cordas para garantir que não acontece perda de precisão. No entanto, isso poderia conduzir a resultados incorretos se a consulta exigisse uma ordem de classificação sobre esses valores. No SQL Server 2012 SP2 CU2, o mapeamento é alterado para numérico (38,0) para permitir a representação de chaves grandes numerosas que alguns esquemas de base de dados estão a usar NUMBER sem precisão/escala para. Isto leva a regressões quando são necessários valores não inteiros.
Resolução
Depois de aplicar esta correção, os valores DE NÚMERO com precisão/escala desconhecida são tratados como duplos valores com o fornecedor OLE DB. Se a precisão for importante e a gama dos valores não for suficientemente grande, pode ativar o novo Trace Flag 7314 que começaria a tratar valores como numéricos (38, 10).
O problema foi corrigido pela primeira vez na seguinte atualização cumulativa do SQL Server.
Atualização Cumulativa 1 para SQL Server 2014 SP1 /en-us/help/3067839
Atualização Cumulativa 8 para SQL Server 2014 /en-us/help/3067836
Atualização Cumulativa 6 para SQL Server 2012 SP2 /en-us/help/3052468
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:
Solução
Para contornar este problema, converta o campo Oráculo do tipo NUMBER para um tipo de dado que é totalmente suportado pelo SQL Server primeiro.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Os produtos de terceiros referidos neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não concede qualquer garantia, implícita ou de outra natureza, relativamente ao desempenho ou à fiabilidade destes produtos.