2011-04-22 2 views
3

테이블이 있고 ASP.NET MVC를 사용하여 개체를 만들고 저장하고 있습니다. 한동안 잘 작동했습니다. 어떻게 든 최근에는 프로덕션 시스템에서이 오류 메시지가 표시되기 시작했습니다.LINQ : System.Data.SqlClient.SqlException : 문자열 또는 이진 데이터가 잘립니다.

System.Data.SqlClient.SqlException : 문자열 또는 이진 데이터가 잘립니다.

내 개발 컴퓨터에서 같은 오류를 복제 할 수 없습니다. 이 열을 일으키는 원인을 찾으려면 어쨌든 가야합니까? 저는 MSSQL 2008 R2 Express를 사용하고 있습니다.

답변

1

삽입 데이터와 데이터베이스의 정의 된 열 사이의 데이터 길이 불일치로 인해 발생합니다. 이는 데이터베이스가이를 저장할 수 있으려면 삽입에서 데이터를 잘라야한다는 것을 나타냅니다.

내부 예외를 면밀히 살펴보면 알 수는 없지만 그 오류를 던진 열에 대한 정보가 더 많다고 생각합니다. 그리고 예, 사용자가 너무 긴 값을 삽입하여 모델에서이 값을 잡는 것을 방지해야합니다.

추가 유효성 검사를 구현하고 싶지 않은 경우 삽입/업데이트를 시도한 내용으로 예외를 기록한 다음 값을 db와 비교해야합니다.

+0

내 개발 컴퓨터에서 서버에만 문제를 복제 할 수 없습니다. – Dean

+0

따라서 두 가지 모두에 로깅을 구현할 것입니다. 두 번째 오류가 발생하면 오류의 원인이 된 자세한 데이터가 있습니다. 대부분의 경우 실수를 복제하는 것이 쉽지 않습니다. 사용자가 프런트 엔드에 무엇을했는지 정확히 알지 못하기 때문입니다. 그리고 항상 DAU가 있습니다. – sra

5

이것은 대개 SQL Server에 정의 된 필드 크기보다 긴 데이터를 삽입하려고 할 때 발생합니다. 문제를 해결하기 위해 데이터베이스의 필드 크기를 늘릴 수 있습니다. 사용자 입력을 받아 데이터베이스에 저장하는 경우 데이터베이스 필드의 정의 된 최대 크기와 비교하여 유효성을 검사해야합니다.

관련 문제