Java 插入失败,因为以下设置选项的设置不正确:';阿里沙波特';
我已经阅读了Stackoverflow中关于这个问题的主题,但我还没有找到解决方案 我的问题是在SQLServer2008中,将字符串或Clob作为XML参数发送到存储过程中。我正在使用jTDS连接它。我读到我必须将“ARITHABORT”设置为ON,但我真的不知道在哪里可以设置 也许在我自己的JAVA会话中,或者在DB中。。。请帮忙!!(很抱歉我的英语很差) 好的!下面是给出错误的方法:Java 插入失败,因为以下设置选项的设置不正确:';阿里沙波特';,java,sql-server-2008,jtds,Java,Sql Server 2008,Jtds,我已经阅读了Stackoverflow中关于这个问题的主题,但我还没有找到解决方案 我的问题是在SQLServer2008中,将字符串或Clob作为XML参数发送到存储过程中。我正在使用jTDS连接它。我读到我必须将“ARITHABORT”设置为ON,但我真的不知道在哪里可以设置 也许在我自己的JAVA会话中,或者在DB中。。。请帮忙!!(很抱歉我的英语很差) 好的!下面是给出错误的方法: private static final String PR_SV_MUDA_STATUS_EVEN
private static final String PR_SV_MUDA_STATUS_EVENTO_CONCLUIDO = "{CALL PR_SV_MUDA_STATUS_EVENTO_CONCLUIDO(?, ?, ?, ?)}";
public String modificaStatus(Connection connection, Integer eventoRobo, String path) throws SQLException {
Connection conn = null;
conn = GenericHibernateDAO.criaConexao();
CallableStatement cs2 = conn.prepareCall(PR_SV_MUDA_STATUS_EVENTO_CONCLUIDO);
cs2.setInt(1, eventoRobo);
cs2.setString(2, null);
cs2.setString(3, null);
cs2.setString(4, path);
cs2.execute();
conn.close();
return null;
}
我相信这就是问题所在
SET ARITHABORT ON;
这需要在存储过程之前运行。您可以在连接后立即运行它
处理完成后,您可能需要运行下面的查询
SET ARITHABORT OFF;
可以使用java程序中的其他语句运行这些查询。我今天遇到了这个问题,并解决了它。我在SQLServer2008R2中创建了一个列的筛选索引,但在插入时会出现此错误。我看到这个问题并没有完全得到回答,因为每次插入时总是打开arithabort可能会很乏味。我在一个博客上发现,数据库兼容性水平是问题所在。将兼容性级别从80(2000)更改为100(2008),问题得到解决。不确定将兼容性级别更改为90是否能解决此问题,但值得一试 要在此处更改的SQL Server兼容级别和命令 如果这不起作用或者你不能改变兼容模式,还有一个解决办法,就是在我在这里谈论的博客中添加一个触发器
请注意,此更改是在测试数据库上完成的,在生产中进行类似更改之前,应对所有应用程序进行测试。在更改之前,请确保您的DBA对此没有问题。请提供一些您试图实现目标但遇到问题的代码,这将有助于获得有用的答案。您遇到的错误是什么?你能分享一下错误堆栈跟踪顶部的几行吗?我刚刚遇到了这一点,这表明集合arithaport应该在自己的批处理中运行。