2011-04-02 110 views
0

我有這樣的錯誤/ exception-的Java到SQL Server的連接異常

SQL異常:com.microsoft.sqlserver.jdbc.SQLServerException:在TCP/IP連接到主機本地主機,端口1433失敗。錯誤:「連接超時,驗證連接屬性,檢查SQL Server的一個實例是否在主機上運行,​​並接受端口上的TCP/IP連接,並且沒有防火牆阻止到端口的TCP連接。」

和我的代碼是 -

try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String connectionUrl = "jdbc:sqlserver://localhost:1433"; 
     Connection con = DriverManager.getConnection(connectionUrl,"",""); 
     System.out.println("ok"); 
     } catch (SQLException e) { 
      System.out.println("SQL Exception: "+ e.toString()); 
     } 
catch (ClassNotFoundException cE) { 
      System.out.println("Class Not Found Exception: "+ cE.toString()); 
     } 

我如何求解帶它,請幫助我。

回答

0

它告訴你它無法連接。

檢查該端口上的本地計算機上是否存在sql server。

檢查sql服務器是否正在接受使用您在getConnection()調用中提供的空白名稱和密碼的連接。

檢查您的jdbc網址格式是否正確,它們有時是製造商/驅動程序特定的。

0

錯誤僅僅意味着java無法連接到您的數據庫。數據庫沒有運行,或者防火牆阻塞了連接。如果您確定您的數據庫服務器在本地主機上運行,​​請在禁用Windows防火牆後嘗試。

2

這可能意味着幾乎任何東西 - 基本上,不可能連接到本地主機上的端口1433。可能是網絡的問題,可能是因爲該數據庫沒有啓動,可能是因爲它正在運行,但不會綁定到端口1433

在緊要關頭,你可以隨時打開一個shell並運行

telnet localhost 1433 

以查看是否有可能建立連接。

0

讓我們看看一些可能性:

  • 數據庫服務器不監聽在localhost:1433:你可能會得到一個「連接被拒絕」,而不是「連接超時」

  • 數據庫服務器緊張(即處於不響應請求的狀態):您可能會收到「連接超時」。

  • 數據庫服務器大量超載:您可能會收到「連接超時」,但您可能會注意到該機器非常慢。

  • 本地軟件防火牆被配置爲阻止對端口1433的所有請求:您可以獲得「連接被拒絕」或「連接超時」......或其他響應。 (這取決於防火牆對不需要的流量所做的操作)。

  • 未配置回送接口(對於IP 127.0.0.x):您更有可能獲得「無路由到主機」或「無路由到網絡」。

  • localhost的DNS條目配置不正確(即,localhost不能解析爲127.0.0.x) - 很多事情可能會發生......取決於它是如何配置錯誤的。

這裏有一些事情可以做診斷的問題......取決於你的系統:使用ipconfigifconfig

  • 看看這個配置的網絡。

  • 看「/ etc/hosts文件」檢查localhost

  • 嘗試進入連接到使用telnet -p 1433

  • 用「PS」或任務管理器的服務,看的過程是什麼運行。

  • 檢查本地防火牆配置,以確保1433從配置的localhost IP地址(可能是127.0.0.1)開放(至少)TCP。

1

我有這個錯誤。

我通過進入SQL Server配置管理器修復了它。

用於SQLEXPRESS的SQL Server 2005 Configuration -> Protocols。查看TCP/IP ProtocolPropertiesIP Address選項卡。

在協議列表的底部(在IPALL下),TCP端口字段爲空。我把1433那裏,保存,重新啓動SQL服務和它的工作很大:)

0

我有一個類似的問題,並通過添加行解決它:

System.setProperty("java.net.preferIPv4Stack", "true"); 

的問題是它使用的IPv6而不是IPv4訪問分貝主機(我用它在遠程主機上的數據庫,而不是本地主機)。 希望它有幫助。