2011-05-13 4 views
4

숫자 데이터 유형에 숫자를 변환 :/30산술 오버플로 오류 나는이 서로 다른 데이터베이스에 쿼리를 실행 한

(소수 (4,2) 등 30)

업데이트 표 설정 PresencePayFactor = 캐스트

하나에서 작동하지만 다른 하나에서 작동하지 않습니다. 2 데이터베이스가 SQL Server 2008 R2

"숫자를 데이터 형식 숫자로 변환하는 동안 오류가 발생했습니다."오류가 발생했습니다.

무엇이 문제 일 수 있습니까?

+0

당신은 그 열이 두 데이터베이스에서 같은 방식으로 정의되어 있는지 확인 했는가? – Mat

+0

캐스트 (십진수 (30)로 30)/30은 1.0과 같습니다. –

+0

두 개의 다른 인스턴스에서 복원 된 동일한 데이터베이스입니다. – Boomer

답변

2

둘 사이에 NUMERIC_ROUNDABORT가 다르게 설정되어 있습니까?

SET NUMERIC_ROUNDABORT OFF 
GO 
Declare @TestTable Table (PresencePayFactor decimal(4,2) null) 
Insert @TestTable(PresencePayFactor) 
Select Cast(30 As decimal(4,2))/30 
GO 
-- No error 

SET NUMERIC_ROUNDABORT ON 
GO 
Declare @TestTable Table (PresencePayFactor decimal(4,2) null) 
Insert @TestTable(PresencePayFactor) 
Select Cast(30 As decimal(4,2))/30 
-- Arithmetic overflow error converting numeric to data type numeric. 

SET NUMERIC_ROUNDABORT (Transact-SQL)

+0

감사합니다. 그것은 좋은 전화 – Boomer

+0

+1 일했습니다. 그 중 하나는 당신이 보통 – gbn

+0

에 대해 생각하지 않지만 데이터베이스 설정 또는 쿼리 설정, 나는 각 쿼리를 실행하기 전에이 코드를 설정해야 의미합니까? – Boomer

관련 문제