Java鏈接SQL Server通常字符串:jdbc:sqlserver://127.0.0.1:1433;DatabaseName=數據庫名;java
你們應該知道:若是機器上安裝的是SQLServer的默認實例(好比SQL Server2005,那麼通常鏈接的服務器名稱是 本機名/"."/localhost/127.0.0.1 來代替,這便是安裝時的默認實例),那麼也就經過TCP 默認1433端口遠程鏈接(固然若是你打開了防火牆,須要放開1433端口)。然而,若是機器上有多個數據庫實例,好比又安裝了SQL Server2008,或者SQL Server2008R2等,這時,問題就來了。sql
Exception1: 沒法打開登陸所請求的數據庫 "數據庫名",登陸失敗。
數據庫
Exception2: 經過端口 1433 鏈接到主機 127.0.0.1 的 TCP/IP 鏈接失敗。錯誤:「java.net.SocketTimeoutException: Receive timed out」。請驗證服務器和實例名稱,並檢查防火牆沒有阻止到端口 1434 的 UDP 通訊,並且對於 SQL Server 2005 或更高版本,還要驗證 SQL Server Browser 服務正在主機上運行。
c#
對於c#而言,對付多個數據庫實例,在鏈接時的鏈接字符串使用「本機名+\+實例名」便可,使用以下:服務器
string connectionString = "Data Source=.\\mssqlserver2008;Initial Catalog=MyBookShop;User ID=sa;password=123456";
複製代碼
來代替原先的單個數據庫實例鏈接:sqlserver
string connectionString = "Data Source=.;Initial Catalog=MyBookShop;User ID=sa;password=123456";
複製代碼
而對於java,對付多個數據庫實例就有些要注意的了:url
jdbc:sqlserver://127.0.0.1\\mssqlserver2008;DatabaseName=LPT;
此處應去掉端口1433。由於鏈接數據庫自命名實例的url中沒有端口號1433,這是SQLServer中的管理機制決定的,這樣鏈接默認是UDP是1434端口。若是你打開了防火牆,須要放開UDP 1434端口。