SQL Server - 連接到具名執行個體 的連接失敗

假設我們在撰寫Java連結DB的程式時,連結資料庫的名稱是由主機名稱+具名執行個體名稱

,則有可能產生com.microsoft.sqlserver.jdbc.SQLServerException: 連接到具名執行個體  的連

接失敗。錯誤: java.net.SocketTimeoutException: Receive timed out。的錯誤訊息!

若我們連結的名稱如下,則不會有問題

開啟TCP\IP通訊協定來連接,IP可取代主機名稱
jdbc:sqlserver://localhost;DatabaseName=XXXX



利用主機名稱
jdbc:sqlserver://Ben-PC;DatabaseName=XXXX

但假設是利用主機名稱+具名執行個體名稱,則會連接失敗(timed out)
jdbc:sqlserver://Ben-PC\\Ben-PC;DatabaseName=XXXX

PS. 這在本機只安裝一個SQL Server比較不會注意到,因為通常在安裝時,主機名稱預設會

和執行個體名稱一樣;但若安裝另一版本的SQL Server,則執行個體名稱須另外建立。


若要成功連接可透過完整的連接參數,即加上1433 port

jdbc:sqlserver://Ben-PC\\Ben-PC:1433;DatabaseName=XXXX

jdbc:sqlserver://localhost\\Ben-PC:1433;DatabaseName=XXXX

或是開啟組態設定內的SQL Server Browser服務

當您安裝兩套以上SQL Server時,就有可能會需要指定主機名稱+具名執行個體名稱的連接

方式。


留言