2013-07-23 3 views
1

Java에서 Log4j를 사용하여 SQL Server 데이터베이스에 로그하는이 문제가있는 메신저. 크기 나 제한을 초과하는 열에 데이터를 삽입하려고하면 일반적으로 발생하지만, 불행히도이 경우는 아닙니다. 몇 초 동안 완벽한 기록을 남긴 다음 ... 붐! (SQL - 데이터 자르기를 실행하지 못했습니다.) 나는이 발견Log4J - SQL 데이터 잘림

log.debug("Connecting to server... 100.0.0.1"); 

:

식 실수가 발생할 수 있습니다 데이터가 잘릴 수

나는 IP Adresses를 포함하는 문자열을 보낼 수 있습니다. 잘림 은 다음과 같은 경우에 발생할 수 있습니다.

문자열입니다. 예를 들어 DT_WSTR 데이터 형식이 인 문자열 데이터를 DT_STR 데이터 형식의 문자로 측정 된 동일한 길이 문자열로 변환하면 원래 문자열에 더블 바이트 자를 포함하면 데이터가 손실됩니다.

중요한 자릿수. 예를 들어, DT_I4 데이터 유형의 정수를 DT_I2 데이터 유형으로 변환하거나 부호없는 정수를 부호있는 정수로 변환합니다. 중요하지 않은 자릿수. 예를 들어 DT_R8 의 실수를 DT_R4 또는 DT_I4 데이터 유형의 정수로 DT_R4 데이터 유형으로 변환합니다.

http://msdn.microsoft.com/en-us/library/ms137867.aspx

아마 누군가가 이미 그래서 난 질문을 해결하는 방법을 알고있다.

읽어 주셔서 감사합니다.

답변

1

이 문제가 해결되었습니다. 내가 잘못하고 있었다 :

그것은 당신의 크기 또는 제한을 초과하는 열 에 데이터를 삽입 할 때 일반적으로 발생하지만, 불행히도 이것은 내 경우 아닙니다.

예, 그렇습니다. 나는 아주 큰 숫자를 삽입했기 때문에 SmallInt 타입을 가진 컬럼을 가지고있어서 INT와 문제가 해결되었다. 또한 VARCHAR은 ASCII를 사용하고 nvarchar도 UNICODE를 취할 수 있기 때문에 String을 사용하여 VARCHAR를 NVARCHAR로 변경할 수 있습니다.