증상
Microsoft SQL Server 2012 또는 SQL Server 2014에서 OLE DB 공급자를 사용 하 여 Oracle 연결 서버의 데이터를 선택 하는 쿼리를 실행 하면 숫자 형식 열의 값이 쿼리 결과에서 잘릴 수 있습니다.
원인
이 문제는 선언 되지 않은 정밀도/scale이 있는 Oracle 숫자 형식에 SQL Server 데이터 형식에 대 한 명확한 1:1 매핑이 없을 수 있기 때문에 발생 합니다. SQL server 2012 SP2 CU2 이전에는 SQL Server가 해당 값을 문자열로 매핑하여 정밀도 손실이 발생 하지 않도록 합니다. 그러나 쿼리에 이러한 값에 대 한 정렬 순서가 필요한 경우 잘못 된 결과가 나타날 수 있습니다. SQL Server 2012 SP2 CU2에서는 일부 데이터베이스 스키마에서 정밀도/소수 없이 숫자를 사용 하는 큰 정수 키의 표현을 허용 하도록 매핑이 숫자 (38, 0)로 변경 됩니다. 이는 정수가 아닌 값이 필요한 경우 재발을 야기 합니다.
해결 방법
이 수정을 적용 한 후에는 알 수 없는 정밀도/배율의 숫자 값이 OLE DB 공급자에서 double 값으로 처리 됩니다. Precision이 중요 하 고 값의 범위가 충분 하지 않으면 새 추적 플래그 7314을 사용 하 여 해당 값을 숫자 (38, 10)로 처리 하기 시작 하도록 할 수 있습니다.
이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2014 SP1 용 누적 업데이트 1 /en-us/help/3067839
SQL Server 2014의 누적 업데이트 8 /en-us/help/3067836
SQL Server 2012 SP2에 대 한 누적 업데이트 6 /en-us/help/3052468
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
해결 방법
이 문제를 해결 하려면 Oracle 필드를 숫자 형식에서 SQL Server가 먼저 완벽 하 게 지 원하는 데이터 형식으로 변환 합니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
이 문서에서 설명하는 타사 제품은 Microsoft와 무관한 제조업체의 제품입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.