nvarchar max给出'字符串或二进制数据将被截断'

时间:2012-01-30 15:46:34

标签: java sql string sql-server-2008 nvarchar

我正在尝试将大于5500个字符的字符串值插入到MSSQL 2008数据库中。我收到了错误

  

字符串或二进制数据将被截断。

当我尝试插入这些值时,即使列的数据类型声明为nvarchar(max)。我可以输入字符串大小的上限吗?如果是这样,那么这个问题的解决方案是什么?

修改

当我通过mgmt studio手动输入数据时,它可以工作。但是,我正在通过JDBC-driver& amp;准备好的陈述。

我的查询格式为:

UPDATE table SET columnX = value1 WHERE columnX = value2;
  • 我将此语句添加到批处理中,每1000个语句执行一次。
  • 在这种情况下,
  • value1包含大量字符。
  • columnX明确定义为nvarchar(max)

1 个答案:

答案 0 :(得分:0)

Microsoft鼓励我们使用SQLServerPreparedStatement来修改像varchar(max)这样的大值类型。 http://msdn.microsoft.com/en-us/library/ms378813.aspx

当我遇到与JDBC / Pentaho类似的问题时,您也可以使用存储过程来解决问题,就是我所做的。

您可以在完成任务的sql-server上编写存储过程。只需从Java代码中调用该存储过程。

我希望有所帮助!