2013-05-31 98 views
4

我目前使用下面的連接字符串連接到數據庫(數據庫是相同的服務器上SERVERIP):等效JDBC連接字符串

String constr = "Data Source=ServerIP,1433;Network Library=DBMSSOCN;Initial 
Catalog=dbName;User ID=dbUserID;Password=dbUserPassword"; 

在使用時,該連接罰款asp.net。 (我已經手動創建dbUserId,並從SQL Server管理工作室分配它dbUserPassword dbUserId是數據庫「dbName」的所有者)

我有一個java swing應用程序在另一臺pc上,我需要連接到同一數據庫。我使用駐留在C:中的sqljdbc4.jar。我的類路徑有條目「。; C:\ sqljdbc4.jar」。爲了實現該連接,我使用的下面幾行代碼:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

String url = "jdbc:sqlserver://ServerIP:1433;databaseName=dbName"; 

    String user = "dbUserID"; 
    String pass = "dbUserPassword"; 
    Connection connection = DriverManager.getConnection(url, user, pass); 

然而,我得到就行異常「連接連接=的DriverManager.getConnection(URL,用戶通過);」 :「與主機」ServerIP「的TCP/IP連接,端口1433失敗。錯誤:」連接超時。驗證連接屬性。確保主機上正在運行SQL Server實例並接受端口上的TCP/IP連接。確保到端口的TCP連接沒有被防火牆阻止。「

我已經檢查過Windows防火牆已關閉(並且它還在家庭和公共網絡上爲MSSQLSERVER端口1433 tcp添加了異常)從SQL Server Management Studio中,我已經啓用TCP/IP的SQL Server和SQL Server Express的。

任何人都可以點我什麼可能是錯誤的連接字符串或SQL Server連接設置?

+0

你可以從你運行Swing應用程序的地方Ping ServerIP嗎? – maba

+0

Ping IP,並檢查POrt是否打開,可能正在使用某些網絡嗅探器 –

+0

@maba我可以ping IP。事實上,我從運行java應用程序的機器遠程使用服務器。另外,netstat -aon給出了以下行:TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 5584 – Karan

回答

2

最後找出根本原因。問題不在於java連接字符串,IP地址或端口。它在網絡中。 serverIP和運行java應用程序的機器的IP位於不同的子網上。因此,這兩個子網之間的交換機制阻塞了端口1433上的流量。因此,我在運行java應用程序的電腦上獲取超時,而asp.net web應用程序工作得很好(流量沒有通過交換機互連子網絡)

我希望事實證明這對未來嘗試實現類似目標的人有用。

+0

你對上述問題做了什麼?即。什麼地方變化? – DPM

+0

@DPM我只是確保java應用程序和sql數據庫服務器駐留在與上面提到的子網相同的計算機上。我可以知道你需要什麼其他信息嗎? – Karan

+0

@Karan我想我也面臨同樣的問題。我的sql服務器有主機名* .uss.net,而linux服務器有* .privatecloud.local。這些在不同的子網?你可以幫我嗎? – Ani

0

有無您嘗試使用jtds.jar。我正在使用以下它正在爲我工​​作。

public static String jdbc_url="jdbc:jtds:sqlserver://yourServerIp:1433/dbName"; 
    public static String jdbc_username="sa"; 
    public static String jdbc_password="prabhakar"; 
    public static String jdbc_driver="net.sourceforge.jtds.jdbc.Driver"; 
    Class.forName(jdbc_driver); 
    Connection cn=null;  
    cn=DriverManager.getConnection(jdbc_url, jdbc_username,jdbc_password); 
+0

我會試試看。謝謝。 – Karan