2017-08-10 1304 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選項,允許在不知道或關心使用的端口的情況下進行連接。 –