SQLServerException: The server failed to resume the transaction. Desc:ab00000002

public void runSp(List<String> params, DataSource dataSource, String spName) throws SQLException {
  StringBuffer sb = new StringBuffer("{call " + spName + " (");
  for (int i = 0; i < params.size() - 1; i++) {
    sb.append("?,");
  }
  sb.append("?)}");
  String callString = sb.toString();
  LOGGER.info("[runSp] Running statement: " + callString);
  Connection conn = getConnection(dataSource);
  conn.setAutoCommit(false);
  CallableStatement cs = conn.prepareCall(callString);
  for (int i = 0; i < params.size(); i++) {
    cs.setString(i + 1, params.get(i));
  }
  try {
    cs.execute();
    conn.commit();
    LOGGER.info("sp completed successfully");
  } catch (Exception e) {
    LOGGER.info("sp failed", e);
    conn.rollback();
  } finally {
    cs.close();
    conn.close();
  }
}

程序運行過程中調用該方法時拋出這個異常。程序需要在運行過程中調用sql Server 的存儲過程,但是存儲過中已經有了事物的提交。

我在java code中同樣添加了java code就拋出了這個一場。在我嘗試去掉java code中的事物控制以後,錯誤果然沒有。具體原因尚在學習過程中,希望不吝賜教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章