Symptomy
Po wykonaniu kwerendy w celu wybrania danych z serwera połączonego z programem Oracle za pomocą dostawcy OLE DB w programie Microsoft SQL Server 2012 lub SQL Server 2014 wartości w kolumnie Typ liczby mogą być obcinane w wynikach zapytania.
Przyczyna
Ten problem występuje, ponieważ typ numeru Oracle z niezadeklarowaną precyzją/skalą może nie mieć wyraźnego mapowania 1:1 na typ danych programu SQL Server. Zanim program SQL Server 2012 z dodatkiem SP2 CU2, program SQL Server mapuje te wartości na ciągi, aby upewnić się, że nie ma żadnej utraty precyzji. Może to jednak prowadzić do niepoprawnych wyników, jeśli kwerenda wymaga kolejności sortowania według takich wartości. W programie SQL Server 2012 z dodatkiem SP2 CU2 mapowanie jest zamieniane na wartość liczbową (38; 0) w celu umożliwienia reprezentacji dużych kluczy całkowitych, w których niektóre schematy bazy danych używają numeru bez precyzji/skali. To prowadzi do regresji w przypadku konieczności wykonania wartości niebędących liczbami całkowitymi.
Rozwiązanie
Po zastosowaniu tej poprawki wartości liczbowe z nieznaną precyzją/skalą są traktowane jako podwójne wartości za pomocą dostawcy OLE DB. Jeśli dokładność jest istotna, a zakres wartości jest zbyt mały, możesz włączyć nową flagę śledzenia 7314, która będzie umożliwiała traktowanie takich wartości jako liczb (38, 10).
Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 1 dla programu SQL Server 2014 z dodatkiem SP1 /en-us/help/3067839
Zbiorcza aktualizacja 8 dla programu SQL Server 2014 /en-us/help/3067836
Zbiorcza aktualizacja 6 dla programu SQL Server 2012 z dodatkiem SP2 /en-us/help/3052468
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
Obejście
Aby obejść ten problem, należy przekonwertować pole Oracle z typu Liczba na typ danych, który jest w pełni obsługiwany przez program SQL Server.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.