SAP DBTech JDBC:无法连接到jdbc:sap://192.168.33.114:39015 / [SAP DBTech JDBC:[2]:一般错误:SYSTEMDB未连接]

时间:2017-08-10 07:48:19

标签: java hana

当我连接到我的sap hana数据库时,它会抛出异常 但如果我没有指定任何数据库名称,那么它默认连接到sap hana的HEX数据库。

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://192.168.33.114:39015/ [SAP DBTech JDBC: [2]: general error: SYSTEMDB not connected]

这是虚拟代码

import java.sql.Connection;
import java.sql.ResultSet;

public class SapConnection {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
        Class.forName("com.sap.db.jdbc.Driver");

        String url = "jdbc:sap://192.168.33.114:39015/?databaseName=abcd";
        String user = "abc";
        String password = "xyz";

        Connection cn = java.sql.DriverManager.getConnection(url, user, password);

        // ... do whatever with the results ...
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

当连接到MDC租户数据库时,要连接的端口不是30..15而是30..13,因为连接违反了在30..13端口上侦听的nameserver进程。

将连接字符串更改为

String url = "jdbc:sap://192.168.33.114:39013/?databaseName=abcd";

应该让它发挥作用。

编辑

另一种连接方法是避免完全提供端口号,并让HANA自己解决这些细节问题。在这种情况下,仅提供instanceNumberdatabaseName就足够了。

示例(数据库在主机skullbox.lab.cat5上运行):

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

相应的JDBC URL如下所示:

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