JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap:

Tento startar meu projeto SPRING Boot, porém esta ocorrendo o seguinte erro :slight_smile:

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxxxxxxxx.spa3.od.sap.biz:30015/ [Unknown host vadbhh00brh.spa3.od.sap.biz:30015 [xxxxxxxxx.spa3.od.sap.biz], -709].
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:126) ~[ngdbc-2.3.58.jar:2.3.58-3a9396a3b9af2e51c5c01c12a1ba5362dde3bfd4]
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:203) ~[ngdbc-2.3.58.jar:2.3.58-3a9396a3b9af2e51c5c01c12a1ba5362dde3bfd4]
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:50) ~[ngdbc-2.3.58.jar:2.3.58-3a9396a3b9af2e51c5c01c12a1ba5362dde3bfd4]

Meu properties esta configurado da seguinte forma

spring.datasource.url=jdbc:sap://xxxxxxxxxx.spa3.od.sap.biz:30015/cccccc
spring.datasource.username=bbbbbbbbb
spring.datasource.password=aaaaaaaaaaaaaaaa
spring.datasource.driver-class-name=com.sap.db.jdbc.Driver

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.HANAColumnStoreDialect

Alguém pode me ajudar ???

Ao invés de utilizar:

spring.datasource.url=jdbc:sap://xxxxxxxxxx.spa3.od.sap.biz:30015/cccccc

Tente utilizar algo como:

jdbc:sap://skullbox.lab.cat5?databaseName=S20&instanceNumber=20

Trata-se de um método alternativo para se conectar, evite fornecer os números de portas completamente e permitir que o HANA calcule esses detalhes por conta própria. Apenas fornecendo o instanceNumber e o databaseName é suficiente neste caso.
Para testar se a porta esta conectando utilize o seguinte comando:

 java -jar ngdbc.jar -u <username>,<password> -n skullbox.lab.cat5 -d S20 -i 

O resultado terá que ser este:

> java -jar ngdbc.jar -u <username>,<password> -n skullbox.lab.cat5 -d S20 -i 
20
Connected.
|                             |
-------------------------------
| 2019-08-04 18:11:53.0730000 |
1 rows.

Outro exemplo que fiz agora pouco e deu certo, sem spring:

try {
   Class.forName("com.sap.db.jdbc.Driver");
   String url ="jdbc:sap://xx.x.x.xxx:30015/DBNAME"; //IP Address of HANAsystem followed by Port number
   String user ="user";
   String password = "password";
   Connection cn = java.sql.DriverManager.getConnection(url, user, password);
   ResultSet rs = cn.createStatement().executeQuery("CALL Test.STORED_PROC");
   
} catch(Exception e) {
   e.printStackTrace();
}

Utilize este jar:

ngdbc.jar

você precisa usar o ngdbc.jar para fazer a conexão.
O número da instância está incluído no número da porta que você está se conectando.
Por exemplo, se a sua porta não é 30015, então 00 é a instância.

Espero que isto ajude.

Renato, bom dia,

Tentei executar a linha de cima,

porém deu o seguinte erro :slight_smile:
$ java -jar ngdbc-2.3.58.jar -u xxxxxx,aaaaaaaa -n vsa6418674.spa3.od.sap.biz:30015 -d A4Y -i 00
SQLException: SAP DBTech JDBC: Cannot connect to jdbc:sap://aaaaa.spa3.od.sap.biz:30015
[Unknown host aaaaaa.spa3.od.sap.biz:30015 [aaaaaaa4.spa3.od.sap.biz], -709].

Suponho que o nome do host tenha sido editado aqui para xx.xx para não revelar o nome do host real, caso não seja isso ponha o nome do host correto em xxxx, rsrs.

A mensagem de erro do SAP HANA é que a conexão foi recusada. Isso acontece quando não há instância do SAP HANA em execução nessa porta (30115),

Você tem certeza sobre essa porta? O número da instância do banco de dados do SAP HANA é realmente 00?

É muito comum usar 01 ou 00 e o número da instância do SAP HANA não precisa ser o mesmo que o número da instância do sistema SAP executado sobre ela.

Conseguiu man? @evandro_araujo