2016-05-04 4 views
0

Ich versuche, eine gespeicherte Prozedur mithilfe von Java mit jdbctemplate aufrufen, und die meiste Zeit habe ich die folgende Ausnahme.Verschachtelte Ausnahme ist com.microsoft.sqlserver.jdbc.SQLServerException: Der Server konnte die Transaktion nicht fortsetzen

2016-05-03 11:47:26 ERROR SomeController: 60 - Fehler in ..getOpenItems()
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; schlechte SQL-Grammatik [{call storeproc1 (?,?,?,?,?,?,?,?)}]; verschachtelte Ausnahme ist com.microsoft.sqlserver.jdbc.SQLServerException: der Server konnte die Transaktion nicht fortsetzen. Beschreibung: a600000018.

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

Java-Code:

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()); 

Bin ich etwas falsch zu machen. Es funktioniert gut in der lokalen Umgebung, aber wirft die obige Ausnahme in Testumgebung.

+0

Ist die lokale Umgebung mit dem gleichen Server verbinden? Überprüfen Sie die Db-Versionsnummer und den JDBC-Treiber ebenfalls. –

Antwort

1

Ich bin in der Lage, es zu beheben. Es gab eine Sequenz von gespeicherten Prozeduren, die im Flow aufgerufen wurden und in einer der gespeicherten Prozeduren gab es eine Anweisung namens "Begin Transaction" und am Ende der Stored Procedure gab es eine andere Anweisung namens "Commit transaction". Ich weiß, was diese Aussage bedeutet, aber ich habe diese Aussagen auskommentiert und es behoben.

Überraschend war das. Ich meine lokal funktioniert auch ohne die kommentierte Transaktion perfekt, aber das war nicht in UAT. So kommentierte es jetzt, es funktioniert gut in lokalen und UAT. Ich weiß immer noch nicht den Grund, warum es behoben, aber behoben

Verwandte Themen