Я понимаю, что это старый вопрос, но недавно сам столкнулся с этим и подумал, что должен пролить свет.
В драйвере jtds
это кажется преднамеренным.
Если вы посмотрите на TdsData.java
, вы увидите, что это происходит в этом кодовом блоке:
} else {
if (pi.isUnicode && len <= MS_LONGVAR_MAX / 2) {
pi.tdsType = XSYBNVARCHAR;
pi.sqlType = "nvarchar(4000)";
} else if (!pi.isUnicode && len <= MS_LONGVAR_MAX) {
CharsetInfo csi = connection.getCharsetInfo();
try {
if (len > 0 && csi.isWideChars() &&
pi.getBytes(csi.getCharset()).length > MS_LONGVAR_MAX) {
pi.tdsType = SYBTEXT;
pi.sqlType = "text";
} else {
pi.tdsType = XSYBVARCHAR;
pi.sqlType = "varchar(8000)";
}