nvarchar max дает «Строковые или двоичные данные будут обрезаны» - PullRequest
0 голосов
/ 30 января 2012

Я пытаюсь вставить строковые значения больше 5500 символов в базу данных MSSQL 2008. Я получаю ошибку

Строка или двоичные данные будут усечены.

когда я пытаюсь вставить эти значения, даже если тип данных столбца объявлен как nvarchar (max). Есть ли ограничение на размер строки, которое я могу ввести? Если это так, что бы решить эту проблему?

EDIT

Когда я вручную ввожу данные через mgmt studio, это работает. Тем не менее, я выполняю обновления через JDBC-драйвер и подготовленные операторы.

Мой запрос имеет вид:

UPDATE table SET columnX = value1 WHERE columnX = value2;
  • Я добавляю этот оператор в пакет, и раз в 1000 операторов выполняю их.
  • значение1 в этом случае содержит большое количество символов.
  • columnX определенно определяется как nvarchar (max)

1 Ответ

0 голосов
/ 31 января 2012

Microsoft рекомендует нам использовать SQLServerPreparedStatement для изменения типов больших значений, таких как varchar (max).http://msdn.microsoft.com/en-us/library/ms378813.aspx

Вы также можете использовать хранимую процедуру для решения проблемы, что я и сделал, когда у меня были похожие проблемы с JDBC / Pentaho.

Вы можете написать хранимую процедуру наSQL-сервер, который выполняет задачу.И просто вызовите эту хранимую процедуру из вашего Java-кода.

Надеюсь, это поможет!

...