假設我們在撰寫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時,就有可能會需要指定主機名稱+具名執行個體名稱的連接
方式。
,則有可能產生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時,就有可能會需要指定主機名稱+具名執行個體名稱的連接
方式。
留言
張貼留言