2017-08-10 1296 views
0

当我连接到我的SAP HANA数据的基础上,以便它抛出异常 ,但如果我没有指定任何数据库名称,那么它默认连接到sap hana的HEX数据库。SAP DBTech JDBC:无法连接到JDBC:SAP://192.168.33.114:39015/[SAP DBTech JDBC:[2]:一般错误:SYSTEMDB未连接]

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

当连接到MDC租户DB的端口连接的是,不要30..15但30..13作为连接违背了nameserver进程正在监听30..13端口。

改变你的连接字符串

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

应该使其工作。

EDIT

的另一种方法来连接是完全避免提供的端口号,并让HANA推测这些细节出本身。在这种情况下,只需提供instanceNumberdatabaseName就足够了。

例(DB运行在主机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 
+0

感谢拉尔斯.. ,但我得到了我的解决方案。所以我试图连接错误的端口,在阅读Sap文件后发现他们正在使用3__13/14/15/16 ..端口作为系统数据库,而租户数据库则使用3__40/41/42 ...端口和我的数据库在39041端口上运行。 –

+0

刚刚添加了一个替代连接JDBC URL选项,允许在不知道或关心使用的端口的情况下进行连接。 –