public Integer call() {
    Integer result = 0;
    Connection connection = DbPool.connection(server, dbName);
    if (connection == null) {
      onVerbose("Can not obtain connection to %s.%s", server.getId(), dbName);
    } else {
      onVerbose("Obtain connection to %s.%s", server.getId(), dbName);
    }

    if (dummy) {
      result = connection != null? 1:0;
    } else {
      if (connection == null) {
        logger.error(String.format("Can not connect to %s.%s", server.getId(), dbName));
      } else {
        logger.info(String.format("Start work on %s.%s with %d sqls", server.getId(), dbName, sqls.size()));
        
        String sql = null;
        try {
          Statement statement = connection.createStatement();
          for (int i=0; i<sqls.size(); i++) {
            sql = sqls.get(i);
            int ret = statement.executeUpdate(sql);
            onVerbose("Executed \"%s\", update %d rows", sql, ret);
            result++;
          }
        } catch (SQLException e) {
          logger.info("Failed in executed \"" + sql + "\"");
          logger.error(e);
        } finally {
          try {
            connection.close();
          } catch (SQLException e) {
            logger.error(e);
          }
        }

        if (result < sqls.size()) {
          logger.error(String.format("Only complete %d/%d on %s.%s", result, sqls.size(), server.getId(), dbName));
          result = -result;
        }              
      }
    }    
    return result;
  }