증상
MDS 웹 서비스를 사용 하 여 Microsoft SQL Server 2012 또는 SQL Server 2014 마스터 데이터 서비스 (MDS)에서 숫자 특성을 만드는 것으로 가정 합니다. 소수점 오른쪽에 더 많은 자릿수를 지정 하려고 하면 잘못 된 정밀도가 계산 됩니다. 예를 들어 다음을 수행 하 여 16 자리 정밀도를 사용 하는 decimal 특성을 만들려고 합니다.
MetadataAttribute newAttribute = new MetadataAttribute(); newAttribute.DataType = AttributeDataType.Number; newAttribute.DataTypeInformation = 16;
올바른 배율은 16이 고 정밀도가 22 인 열을 만듭니다.
원인
이 문제는 특성을 만들 때 내부 MDS 저장 프로시저가 잘못 된 정밀도 계산을 사용 하기 때문에 발생 합니다. Precision은 38에서 소수 자릿수를 뺀 값으로 계산 됩니다.
해결 방법
이 문제는 다음 SQL Server 누적 업데이트에서 처음 수정 되었습니다.
SQL Server 2014 누적 업데이트 1 /en-us/help/2931693
SQL Server 2012 SP1 용 누적 업데이트 9 /en-us/help/2931078
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
해결 방법
이 문제를 해결 하려면 상황에 맞게 감사 하는 다음 방법을 사용 합니다.
-
SQL Server 2014의 경우 해결 방법을 적용 합니다.
-
SQL Server 2012의 경우 정밀도에서 빼기 배율 (@DataTypeInformation 등)이 아닌 38의 상수 값을 사용 하도록 저장 프로시저를 변경 합니다 (SQL Server 2012로 허용 되는 최대값).
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.