2016-05-04 272 views
0

我想用jdbctemplate調用一個使用java的存儲過程,並且大部分時間我得到了下面的異常。嵌套的異常是com.microsoft.sqlserver.jdbc.SQLServerException:服務器無法恢復交易

2016年5月3日11時47分26秒ERROR SomeController:60 - 錯誤在..getOpenItems()
org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback;錯誤的SQL語法[{call storeproc1(?,?,?,?,?,?,?,?)}];嵌套的異常是com.microsoft.sqlserver.jdbc.SQLServerException:服務器無法恢復事務。說明:a600000018。

在org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:98)
在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
在org.springframework .jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) 在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate的.java:603) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTem plate.java:637)

Java代碼:

String sql = "{call storeproc1(?,?,?,?,?,?,?,?)}"; 
     Object[] parameters = new Object[] {iDisplayStart,iDisplayLength,iSortCol_0,sSortDir_0,sSearch,accNr,ownNr,place}; 

List<DetailBen> invoiceAvailable = jdbcTemplate.query(sql, parameters,new DetailMapper()); 

我做錯任何事。它在本地環境中工作正常,但在測試環境中拋出上述異常。

+0

本地環境是否連接到同一臺服務器?值得檢查Db版本號和JDBC驅動程序。 –

回答

1

我可以修復它。有一個存儲過程序列在流中被調用,並且在其中一個存儲過程中有一個名爲「Begin Transaction」的語句,並且在存儲過程的末尾有另一個名爲「Commit transaction」的語句。我知道這些陳述意味着什麼,但我評論了這些陳述並修正了它。

令人驚訝的是。即使沒有評論交易,我本地的工作也很完美,但在UAT中不起作用。所以現在評論它在當地和UAT都可以正常工作。我仍然不知道它爲什麼修復但修復的原因

相關問題